如何在Feathershjs中使用upsert参数

时间:2018-11-12 00:49:05

标签: node.js mongoose feathersjs

我的配置模型如下:

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”。我尝试将修补程序方法与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 :(得分:0)

一切看起来不错。我能想到的唯一原因是client调用了该服务。 params唯一要传递给服务器的部分是query。您可以here看到它。

所以我的建议是将其添加到您的查询中?也许做类似的事情;

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

然后,您可以在钩子中检查$mongoose是否存在并将其添加到参数中,并且不要忘记在查询中将其删除。

您还可以使用paramsForServer && paramsFromClient