我有一系列像这样的猫鼬查询
var q = [{"_id":'5324b341a3a9d30000ee310c'},{$addToSet:{"Campaigns":'532365acfc07f60000200ae9'}}]
我希望将它们应用于像这样的猫鼬方法
var q = [{"_id":'5324b341a3a9d30000ee310c'},{$addToSet:{"Campaigns":'532365acfc07f60000200ae9'}}] Account.update.apply(this, q);
我该怎么做?如何将mongoose查询对象数组转换为mongoose参数?
我尝试了以下操作,但它不起作用。
var q = [{ "_id": '5324b341a3a9d30000ee310c' }, { $addToSet: { "Campaigns": '532365acfc07f60000200ae9' } }] Account.update(q).exec(function (e, r) { console.log(r) console.log('ERROR') console.log(e) console.log('ERROR') cb(e, r); });
答案 0 :(得分:1)
您需要做的就是通过apply
向update
方法传递正确的对象上下文:
Account.update.apply(Account, q)
.exec(function(e, r) {
// your code here ...
});
this
需要是Model
个实例,而不是全局范围上下文(或其他this
可能在调用时的情况。)
答案 1 :(得分:0)
基本上似乎只是传递函数原型的方式。所以如果你想动态地构建你的参数,那么你需要做这样的事情:
var q = [
{ "_id": account._id },
{ "$addToSet": { "Campaigns": campaign._id } },
];
Account.update( q[0], q[1], (q[2]) ? q[2] : {}, function(err, num) {
基本上,您始终将查询,更新和选项文档作为参数传递。这会使用三元条件将空 {}
文档作为选项参数放入其中,而在动态条目中它不存在。