我的配置模型如下:
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年字段的文档,因此如上所示,应该创建一个新文档,但是我一直都收到空数组:[]。怎么了?
答案 0 :(得分:0)
一切看起来不错。我能想到的唯一原因是client
调用了该服务。 params
唯一要传递给服务器的部分是query
。您可以here看到它。
所以我的建议是将其添加到您的查询中?也许做类似的事情;
var params = { query: { year: 2018, $mongoose: { upsert: true } }
然后,您可以在钩子中检查$mongoose
是否存在并将其添加到参数中,并且不要忘记在查询中将其删除。
您还可以使用paramsForServer
&& paramsFromClient
。