Доступ к значению объекта с помощью переменного ключа Mongoose - PullRequest
0 голосов
/ 19 июня 2020

Я работаю с документом MongoDB, который имеет много пар ключ-значение. Я хочу обновить значения, используя findOneAndUpdate, но для этого мне нужны имена ключей. Все мои ключи связаны с длинной формой на переднем конце, поэтому я надеюсь сэкономить время и передать ключи обратно как переменную с именем 'trait' с помощью socket.io, а затем использовать этот ключ в моем findOneAndUpdate.

    socket.on('editchar', ({ id, trait, val }, callback) => {
        // console.log(id, trait, val);
        Character.findOneAndUpdate({'_id': id}, { trait : val })
            char.save()
        })
    })

Проблема в том, что мой findOneAndUpdate думает, что моя trait переменная является ключевой «чертой». Кто-нибудь знает, как я могу обойти это и сделать так, чтобы мой findOneAndUpdate принял мою переменную в качестве ключа?

Спасибо за помощь

1 Ответ

0 голосов
/ 20 июня 2020

позвольте мне показать пример об объекте и ключах

var key = "name";

var person = {
    [key]: "Halil",
    age: 29,
};

console.log(person);
// { name: 'Halil', age: 29 }

Если вы посмотрите пример, он утешит вас этим объектом, поэтому он использует [key]: "Halil", что означает, что ключ будет name. В этом контексте я считаю, что вам нужно сделать следующее:

socket.on('editchar', ({ id, trait, val }, callback) => {
    // console.log(id, trait, val);
    Character.findOneAndUpdate({ '_id': id }, { [trait]: val })
    char.save()
});

при выполнении [trait]: val вы говорите, что это собственное имя, а не само свойство :)

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