2013-06-25 62 views
1

Meteor應用程序中,我有一個事件應該更新表單上已更改字段的數據庫數據。如何在JavaScript中使用動態變量名而不用評估MongoDB更新?

所以事件處理程序是這樣的:

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的人,而不是一個軟件工程師)

回答

3

您需要使用索引標記創建對象:

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

很大,非常感謝很多! –