2016-08-31 4 views
0

я есть:MongoDB/JavaScript переменная в запросе

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; 

как бы я сделать, чтобы получить minion.attack на основе:

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

и получить nameoption использовать в:

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

ответ

1

Трудно сказать, не глядя на остальную часть кода, но похоже, что вам просто нужно изменить

thisminion.nameoption 

в

thisminion[nameoption] 

Поскольку исходная линия пытается получить доступ к собственности thisminion называется 'nameoption'. Используя квадратные скобки, вы получите доступ к свойству, названному так же, как значение nameoption.

Что касается Монго части: так как вы не можете использовать переменную в качестве значения левой руки, вам нужно сделать немного дополнительной работы:

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

, то вы можете сделать это:

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

Похожие вопросы:

How to set mongo field from variable

Using variables in MongoDB update statement

+0

, но эта минимальная атака является правильной. Мне нужно, чтобы он работал с переменной. – maria

+0

Я обновил свой ответ после повторного чтения вашего вопроса. Простите за это. – Maksym

Смежные вопросы