Mongodb 流星收藏-';这';集合更新后未定义

Mongodb 流星收藏-';这';集合更新后未定义,mongodb,meteor,Mongodb,Meteor,我正在使用表单将一些“设置”保存到Meteor集合(在下面的“设置集合”示例中) 因为有很多设置,所以我在这里使用了我在stackoverflow上一定找到的技巧,即在变量中获取集合(调用“设置”),删除._id,编辑,然后使用更新的变量更新集合 然而,这会弄乱“这个”: Template.settings_edit.events({ 'submit form': function(e, t) { var settings = this // 'THIS' BEING THE DA

我正在使用表单将一些“设置”保存到Meteor集合(在下面的“设置集合”示例中)

因为有很多设置,所以我在这里使用了我在stackoverflow上一定找到的技巧,即在变量中获取集合(调用“设置”),删除._id,编辑,然后使用更新的变量更新集合

然而,这会弄乱“这个”:

Template.settings_edit.events({
  'submit form': function(e, t) {

    var settings = this // 'THIS' BEING THE DATA CONTEXT        
    var settings_id = this._id
    console.log('settings_id: ', settings_id)  //RETURNS _ID AS EXPECTED

    settings.x = new_x  
    settings.y = new_y
    settings.z = new_z
    settings.a = new_a
    // ...
    // etc.

    delete settings._id // MAKES THE COLLECTION 'HEADLESS' SO THAT I CAN USE IT FOR THE UPDATE BELOW

    SettingsCollection.update(settings_id, { $set: settings })     
    console.log('this._id: ', this._id)  // RETURNS UNDEFINED.  WHAT HAPPENED TO 'THIS'???    
    return false;
   }
})
我的问题是,“这个”怎么了

它肯定受到行删除设置的影响。\u id(我不知道为什么)


有没有另一种方法可以实现同样的更新(记住很多设置)同样精巧和简洁?

因为您设置了设置=此,并且对象是通过引用分配的,这意味着如果您更改此设置,设置也会更改,反之亦然。 数组也是如此


对于由值指定的字符串、数字和布尔值,不会发生这种情况

啊哈。完全正确。但是,我可以通过使用空对象来实现相同的结果,例如var new_settings={},new_settings.a=new_a等。)