我有一系列像这样的mongoose查询
var q = [{"_id":'5324b341a3a9d30000ee310c'},{$addToSet:{"Campaigns":'532365acfc07f60000200ae9'}}]
我想将它们应用于像这样的猫鼬方法
var q = [{"_id":'5324b341a3a9d30000ee310c'},{$addToSet:{"Campaigns":'532365acfc07f60000200ae9'}}]
Account.update.apply(this, q);
我怎样才能做到这一点 ?如何将mongoose查询对象数组转换为mongoose参数?
I tried the following but it doesnt work.
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);
});
2 回答
您需要做的就是通过
apply
将正确的对象上下文传递给update
方法:this
需要是Model
实例,而不是全局范围上下文(或者在调用时可能出现的任何其他内容) .基本上似乎只是函数原型似乎传入的方式 . 所以如果你想动态地构建你的参数,那么你需要做这样的事情:
从本质上讲,您将 always 作为参数传递查询,更新和选项文档 . 这使用三元条件将 empty
{}
文档作为options参数放入,在动态条目中它不存在 .