2013-08-29 11 views
6

Próbuję użyć zmiennej jako nazwy pola w instrukcji aktualizacji i to nie działa, wszelkie sugestie?Używanie zmiennych w MongoDB update statement

na przykład:

COLLECTIONNAME.update(
    { _id: this._id }, 
    { $set: { VARIABLE1 : VARIABLE2 } } 
); 

rzeczywisty kod:

'blur .editable' : function() { 
     var target = event.currentTarget.value; 
     var field = event.currentTarget.name; 
     field = ' " ' + field + ' " '; 
     Hostings.update({ _id: this._id },{ $set: { field : target } }); 
    } 

Odpowiedz

12

Można zrobić to w ten sposób:

'blur .editable' : function() { 
    var target = event.currentTarget.value; 
    var field = event.currentTarget.name; 

    var obj = {}; 
     obj[field] = target; 
    Hostings.update({ _id: this._id },{ $set: obj }); 
} 

Javascrip obiektów można uzyskać na dwa sposoby:

object.attribute 

lub

object["attribute"] 

jeśli używasz drugiej metody można uzyskać do niego dostęp za pomocą zmiennej

+0

piękne! Właśnie musiałem usunąć tę linię: field = '"' + field + '"'; i działało idealnie. Dzięki wielkie! – glasses

+0

Świetnie :) Zaktualizowałem odpowiedź, aby usunąć błąd –

1

dla zapytania
COLLECTIONNAME.update({ _id: this._id },{ $set: { VARIABLE1 : VARIABLE2 } }); MongoDB weźmie wartość variable2 ale będzie to rozważyć „variable1” być polem w dokumencie.

Na przechodzącą zmienną, której wartość jest nazwą pola:

trzeba będzie stworzyć JavaScript Object i używać go w sposób następujący:

var obj={}; 
obj[VARIABLE1] = VARIABLE2; //where VARIABLE1 and VARIABLE2 are getting values from elsewhere earlier 

Jeśli chcesz mieć wiele pól w ten sposób, wystarczy dodać go do tego samego obiektu:

obj[VARIABLE3]= VARIABLE4; 

Następnie zrobić operacji aktualizacji jak:

db.collectionname.update({ _id: this._id },{ $set: obj });