Javascript mongoDB使用变量名称而不是变量的值

时间:2019-01-24 14:26:28

标签: javascript mongodb asynchronous

我正在将mongoDB与javascript一起使用。我正在使用以下函数更新集合中的项目,并将“ server_name”作为变量attribute_name传递:

    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)
    },

我希望字典会更新为以下内容:

{"server_name" : new_val}

相反,它执行以下操作:

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

谁能解释这种奇怪的行为以及如何解决?

1 个答案:

答案 0 :(得分:3)

在JavaScript中,{attribute_name: new_value }{"attribute_name": new_value }相同。要使JavaScript使用attribute_name value 作为键,请使用computed property name语法,并用方括号括起来:

var updated_val = { $set: {[attribute_name]: new_value } }