MongoDB & Невозможно установить значение в зависимости от имени переменной - PullRequest
0 голосов
/ 11 марта 2020

Встреча с чем-то, что, как я думал, сработало, но это не так.

У меня есть следующая функция, которая принимает данные и должна обновить одно значение в mongodb.

const updateSkillXP = (data) =>{
    //data = { username:username, sk:sk, xp:100 }

    const collection = db.collection('player');
    let q = {username:data.username}

    //craft a key depending on what skill code comes through.
    let s = "skills."+data.sk;
    u = {$set: {s : data.xp}}

    return collection.updateOne(q,u,(err,res) =>{
        if(err) console.log(err);
    })
}

Документ MongoDB выглядит следующим образом

player = {
    x:0,
    y:0,
    username:"foo",
    skills : { //I need one of the following to update.
        atk:0,
        str:0,
        def:0,
        hp:0
    }
}

Когда я выполнил вышеизложенное, он добавил свойство 'S', но я ожидал изменить значение скажем 'atk' на то, что когда-либо происходило через xp?

1 Ответ

0 голосов
/ 11 марта 2020

Ответ: JavaScript установить ключ объекта по переменной

const updateSkillXP = (data) =>{
    //data = { username:username, sk:sk, xp:100 }

    const collection = db.collection('player');
    let q = {username:data.username}
    let s = "skills."+data.sk;
    let obj = {};
    obj[s] = data.xp;
    u = {$set: obj}

    return collection.updateOne(q,u,(err,res) =>{
        if(err) console.log(err);
    })
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...