我有以下功能:
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' (作为参数传递给我的函数的值)。
答案 0 :(得分:1)
如果要将object属性放在变量中,则需要使用 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
}
}