1

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

所以事件处理程序看起来像这样:

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 更新指令,variableName没有被评估,所以“variableName”被传递而不是它的设置值。

请注意,我想将其用于原型设计,而不是真正的应用程序。所以安全性实际上并不是一个真正的问题。(我是 UX 人,不是软件工程师。)

4

1 回答 1

3

您需要使用索引器表示法创建对象:

var param = { $set: {} };
param.$set[event.target.name] = event.target.value;
someCollection.update(Session.get("currentId"), param);
于 2013-06-25T17:47:03.880 回答