我想知道在更新时使用当前数据上下文是否可能。
collection.update({_id: id},
{$set:
{'tmp.$.data': (function(){
return this.a + this.b})()},
{multi:true});
在设定操作中,我试图用IIFE函数来计算某些东西,而这个'关键词, 但是我没有按照我们的预期得到任何东西,因为IIFE范围被置于更新范围之外。 (a& b是该对象中的项目。)
这就是我想做的事。
如果我们在进行更新时可以控制某些数据,我认为操作集合非常有用。
有人对此有所了解吗?
提前致谢 -
PS。我将此问题更新为js版本。
答案 0 :(得分:0)
每当我遇到@
个变量的陌生感时,我只会在该闭包之外进行引用。所以从这个:
collection.update (_id: id),
($set:
'tmp.$.data': do ->
return @a + @b),
(multi:true)
对此:
a = @a
b = @b
collection.update(
_id: id
$set:
'tmp.$.data': do ->
return a + b
multi:true
)
当函数期望函数作为参数并获得其他东西时,似乎事情会变得混乱。我不确定do
哈希中的tmp.$.data
是否真的有必要,但我不太了解流星,不能说是或否。