如何在JavaScript中使用动态变量名而无需评估MongoDB更新?

如何在JavaScript中使用动态变量名而无需评估MongoDB更新?,mongodb,meteor,Mongodb,Meteor,在一个应用程序中,我有一个事件,它应该更新表单上已更改字段的数据库数据 因此,事件处理程序如下所示: Template.someTemplate.events({'change #someForm' : function(){ eval("someCollection.update(Session.get(\"currentId\"), {$set: {" + event.target.name + ":event.target.value}});"); }}) 当我使用eval时,这

在一个应用程序中,我有一个事件,它应该更新表单上已更改字段的数据库数据

因此,事件处理程序如下所示:

Template.someTemplate.events({'change #someForm' : function(){
    eval("someCollection.update(Session.get(\"currentId\"), {$set: {" + event.target.name + ":event.target.value}});");
}})
当我使用eval时,这很好用。但我怀疑像这样使用eval是否被认为是一种最佳实践,或者是吗

我必须如何编写MongoDB更新代码,才能完成以下工作

  Template.someTemplate.events({'change #someForm' : function(){
    var variableName = event.target.name;
    someColletion.update(Session.get("currentId"), {$set: {variableName:event.target.value}});
  }})
或者,正确的方法是什么?(上面的代码不起作用,对于MongoDB update指令,variableName没有计算,因此传递的是“variableName”,而不是它的设置值


请注意,我想将其用于原型设计,而不是实际的应用程序。因此,安全性实际上不是一个真正的问题。(我是一名用户体验人员,不是软件工程师。)

您需要使用索引符号创建对象:

var param = { $set: {} };
param.$set[event.target.name] = event.target.value;
someCollection.update(Session.get("currentId"), param);