我有以下功能:
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/