Как использовать upsert params с feathershjs - PullRequest
0 голосов
/ 12 ноября 2018

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

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 Ответ

0 голосов
/ 14 ноября 2018

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

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

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

Затем вы можете проверить, существует ли $mongoose, добавить его в параметры и не забыть удалить его в своем запросе.

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

...