【发布时间】:2014-08-06 06:39:15
【问题描述】:
我想知道我们更新时是否可以使用当前数据上下文。
collection.update({_id: id},
{$set:
{'tmp.$.data': (function(){
return this.a + this.b})()},
{multi:true});
在 set 操作中,我尝试用 IIFE 函数和 'this' 关键字计算一些东西, 但是我什么也得不到,因为 IIFE 范围位于更新范围之外。 (a & b 是该对象中的一个项目。)
这就是我想做的。
如果我们可以在更新时控制一些数据,我认为操作集合真的很有用。
有人知道吗?
提前致谢-
ps。我将此问题更新为 js 版本。
【问题讨论】:
-
什么是
@a和@b?如果这些是封闭函数中this上的变量,则可以使用“胖箭头” -do =>而不是do ->- 绑定函数表达式的上下文。尽管在update调用之外执行data = @a + @b可能更简单,但只需$set: 'tmp.$.data': data。 -
谢谢。我测试了 => 关键字并打印了这个,但它似乎没有任何有用的信息。
-
所以看起来更新调用在方法内部。
a和b是什么?它们是文档本身的字段吗? -
是的。我认为coffeeScript 让问题变得混乱,所以我更新了它的js 版本。
标签: node.js mongodb coffeescript meteor