2016-08-31 2 views
0

ich habe:mongodb/JavaScript-Variable in Abfrage

var optiontable = {1: 'attack', 2: 'defence', 3: 'intelligence'}; 
    var option = 1; 
    var minion = minions[thisminion]; // get correct, works. 
    console.log(optiontable[option]); // would output "attack" 
    var nameoption = optiontable[option]; 
var increasement = 8; 

wie würde ich die minion.attack zu erhalten tun, um auf Basis von:

thisminion.nameoption // this wont work when it should display the result of thisminion.attack 

und erhalten die nameoption in verwenden:

 minions.update({ 
        _id: thisminion._id, 
        userid: playerid 
       }, {$inc: {nameoption: increasement}}) 

Antwort

1

Schwer zu sagen, ohne auf den Rest des Codes, aber sieht aus wie Sie müssen nur ändern

thisminion.nameoption 

zu

thisminion[nameoption] 

Da Ihre ursprüngliche Linie versucht thisminion Eigentum 'nameoption' genannt zuzugreifen. Wenn Sie eckige Klammern verwenden, erhalten Sie Zugriff auf die gleichnamige Eigenschaft, die dem Wert von nameoption entspricht.

Was den Mongo Teil: da Sie nicht eine Variable als linke Wert verwenden können, müssen Sie ein wenig zusätzliche Arbeit tun:

var updateObj = {}; 
updateObj[nameoption] = increasement; 

dann können Sie dies tun:

minions.update({ 
        _id: thisminion._id, 
        userid: playerid 
       }, {$inc: updateObj}) 

ähnliche Fragen:

How to set mongo field from variable

Using variables in MongoDB update statement

+0

aber thisminion.attack ist der richtige. Ich brauche es, um mit der Variable zu arbeiten. – maria

+0

Ich habe meine Antwort aktualisiert, nachdem ich Ihre Frage erneut gelesen habe. Das tut mir leid. – Maksym