Как использовать upsert params с feathershjs

У меня есть модель конфига, как показано ниже:

module.exports = function (app) {
  const mongooseClient = app.get('mongooseClient');
  const { Schema } = mongooseClient;
  const config = new Schema({
    year: { type: Number, required: true },
    group: { type: Array, required: true },
    title: { type: String, required: true },
    format: { type: String, required: true },
    createdAt: { type: Date, default: Date.now },
    updatedAt: { type: Date, default: Date.now }
  }, { collection: 'config' });

  return mongooseClient.model('config', config);
};

в моем файле JS у меня есть имя службы "config". Я пытаюсь использовать метод patch с upsert:true, но он не работает.

var data = { year: 2018, group: [], title: "", format:""  }
var params = { query: { year: 2018 }, mongoose: { upsert: true } }

app.service('config').patch(null, data, params).then(function(result){
console.log(result);
});

В моей коллекции нет ни одного документа с полем 2017 года, поэтому, как вы можете видеть выше, должен быть создан новый документ, но я все время получаю пустой массив: []. Что случилось?

1 ответ

Все выглядит хорошо. Единственная причина, по которой я могу думать, чтобы это не работало, это то, что сервис вызывается из client, Единственная часть params что будет передано на сервер является query, Вы можете увидеть это здесь.

Так что я предлагаю добавить это к вашему запросу? может сделать что-то подобное;

var params = { query: { year: 2018, $mongoose: { upsert: true } }

Тогда в ваших крючках вы можете проверить, если $mongoose существует и добавьте его в параметры и не забудьте удалить его в своем запросе.

Вы также можете использовать paramsForServer && paramsFromClient,

Другие вопросы по тегам