javascript - 使用 findAndModify 时将函数参数作为 $set 运算符中的字段名称传递

标签 javascript node.js mongodb

我有以下功能:

module.exports.saveClient = function(name) {
    db.myDatabase.findAndModify({
        query: { _id: 'clients' },
        update: { $set: { clients: { name: {
                                        'name': name,
                                        'projects':{}
                                        }
                }}},
        new: true
    }
};

当我像这样调用函数时:

myModule.saveClient(clientName);

在 $set 运算符中,它读作:

update: { $set: { 'clients': { 'name': {
                                        'name': clientName,
                                        'projects':{}
                                        }
                }}}

因此,字段名称将转换为字符串,我希望第一个“名称”为“clientName”(作为参数传递给函数的值)。

最佳答案

如果要将对象属性放入变量中,则需要使用 square bracket notation 构造字段对象如下:

module.exports.saveClient = function(name) {
    var clients = {};
    clients[name] = {
        'name': name,
        'projects':{}
    };
    db.myDatabase.findAndModify({
        query: { _id: 'clients' },
        update: { $set: { clients: clients }},
        new: true
    }
};

或者使用computed property names (ES6) :

module.exports.saveClient = function(name) {
    let clients = {
        [name]: {
            'name': name,
            'projects':{}
        }
    }
    db.myDatabase.findAndModify({
        query: { _id: 'clients' },
        update: { $set: { clients: clients } },
        new: true
    }
}

关于javascript - 使用 findAndModify 时将函数参数作为 $set 运算符中的字段名称传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899350/

相关文章:

javascript - 如何根据数组中的项目显示 Accordion 组

javascript - 在 d3 的 forcelayout 算法中禁用力

javascript - Meal.nutrition 的类型必须是 Output Type 但得到 : undefined

mongodb - 开放时间 MongoDB 的模式

php - Doctrine mongo odm,注释并查询mongo ObjectId?

javascript - 将具有不同 id 的元素拖放到它们相应的放置区

JavaScript Promises - 在继续之前等待解决

node.js - MEAN 堆栈安装给出 304 和 404s

node.js - 如何为图像的 src 抓取网页?

node.js - WebStorm/grunt 调试运行抛出 EADDRINUSE 错误