在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人,而不是软件工程师。)
答案 0 :(得分:3)
您需要使用索引符号创建对象:
var param = { $set: {} };
param.$set[event.target.name] = event.target.value;
someCollection.update(Session.get("currentId"), param);