我想更新dataToChange对象中包含的每个字段但由于某种原因我无法将密钥名称传递给update(),我的意思是该方法不会从外部获取它并且它正在寻找" key&#34 ;数据库对象中的字段。我该怎么做?我尝试使用${key}
,但它被视为错误。
changeUserInfoFashion = function (id, dataToChange, res, callback) {
//var id = id;
_.forIn(dataToChange, function (value, key) {
key.toString();
console.log('I AM GOING TO UPDATE ' + key + " WITH " + value);
User.update(
{"_id": id},
//Here I need to pass key -->
{key: value},
function (err, results) {
console.log(results);
if (err) {
return callback();
}
return res.json({success: true, msg: key + ' changed.'}).status(200);
});
});
};
dataToChange的示例
{
name: 'Baby',
age: 32
}
答案 0 :(得分:2)
无需迭代对象并更新每个字段,您可以使用 $set
运算符,如下所示:
changeUserInfoFashion = function (id, dataToChange, res, callback) {
User.update(
{ "_id": id },
{ "$set": dataToChange },
function (err, results) {
console.log(results);
if (err) { return callback(); }
return res.json({
success: true,
msg: JSON.stringify(dataToChange) + ' changed.'
}).status(200);
}
);
};
答案 1 :(得分:1)
那不行。创建一个空对象并为其指定键值:
_.forIn(dataToChange, function (value, key) {
key.toString();
console.log('I AM GOING TO UPDATE ' + key + " WITH " + value);
var updateData = {};
updateData[key] = value;
User.update(
{"_id": id},
//Here I need to pass key -->
updateData,
function (err, results) {
console.log(results);
if (err) {
return callback();
}
return res.json({success: true, msg: key + ' changed.'}).status(200);
});
});
答案 2 :(得分:1)
changeUserInfoFashion = function (id, dataToChange, res, callback) {
//var id = id;
User.update(
{"_id": id},
dataToChange,
function (err, results) {
console.log(results);
if (err) {
return callback();
}
return res.json({success: true, msg: key + ' changed.'}).status(200);
});
};