Javascript mongoDB принимает имя переменной, а не значение переменной - PullRequest
0 голосов
/ 24 января 2019

Я использую mongoDB с javascript. Я обновляю элемент в коллекции, используя следующую функцию и передавая "имя_сервера" в качестве переменной атрибут_имя:

    async update_server_attribute(db, server_id, attribute_name, new_value){
        var my_query = { "server_id": server_id }
        var updated_val = { $set: {attribute_name: new_value } }
        db.collection("servers").updateOne(my_query, updated_val)
    },

Я ожидаю, что dict обновится до следующего:

{"server_name" : new_val}

Вместо этого он делает следующее:

{"server_name" : old_value, "attribute_name" : new_val}

Может кто-нибудь объяснить это странное поведение и как это исправить?

1 Ответ

0 голосов
/ 24 января 2019

В JavaScript {attribute_name: new_value } обрабатывается так же, как {"attribute_name": new_value }. Чтобы JavaScript использовал ключ значение из attribute_name в качестве ключа, используйте синтаксис имя свойства , заключив его в квадратные скобки:

var updated_val = { $set: {[attribute_name]: new_value } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...