Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongodb,更新时使用数据上下文_Node.js_Mongodb_Coffeescript_Meteor - Fatal编程技术网

Node.js Mongodb,更新时使用数据上下文

Node.js Mongodb,更新时使用数据上下文,node.js,mongodb,coffeescript,meteor,Node.js,Mongodb,Coffeescript,Meteor,我想知道在我们更新时是否可能使用当前数据上下文 collection.update({_id: id}, {$set: {'tmp.$.data': (function(){ return this.a + this.b})()}, {multi:true}); 在set操作中,我尝试用iLife函数和'this'关键字计算一些东西, 但我无法得到我们期望的任何东西,因为IIFE范围位于更新范围之外。 a&b是该对象中的项目 这就是我想做的 如果我们在进行更新时能够

我想知道在我们更新时是否可能使用当前数据上下文

collection.update({_id: id},
  {$set:
    {'tmp.$.data': (function(){
      return this.a + this.b})()},
  {multi:true});
在set操作中,我尝试用iLife函数和'this'关键字计算一些东西, 但我无法得到我们期望的任何东西,因为IIFE范围位于更新范围之外。 a&b是该对象中的项目

这就是我想做的

如果我们在进行更新时能够控制一些数据,我认为操纵集合是非常有用的

有人知道这件事吗

提前谢谢-


另外,我将这个问题更新为js版本

每当我遇到@variables的奇怪之处时,我都会在闭包之外进行引用。因此:

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
)

当一个函数期望一个函数作为参数,而get是另一个参数时,事情似乎会变得一团糟。我不确定这在tmp中是否起作用。$。数据散列也确实是必要的,但我对meteor的了解还不足以说是或否。

什么是@a和@b?如果这些是封闭函数中的变量,则可以使用fat箭头-do=>而不是do->来绑定函数表达式的上下文。虽然在更新调用之外执行data=@a+@b可能更简单,但只需$set:'tmp.$.data':data.谢谢。我测试了=>关键字并打印了它,但它似乎没有任何有用的信息,所以看起来更新调用在一个方法中。a和b是什么?它们是文档中的字段吗?是的。我认为coffeeScript会让问题变得混乱,所以我更新了它的js版本。实际上,@keyword在coffeeScript中的意思是这样的,并使函数成为IIFE函数。@jwjin是的,我意识到了这一点,但如果另一端的代码不希望IIFE,它会把事情搞砸。我见过这种情况,尤其是胖箭。