我正在尝试进行简单的更新,但是当我为要更改的字段使用变量时它不起作用。
这有效
var update = {"$inc": {"racesWon" : 1}}
User.findOneAndUpdate({
username: req.body.username
}, update, {}, callback)
现在我有一个像这样的开关
var resultToUpdate = ""
switch (req.body.result) {
case 1:
resultToUpdate = "racesWon";
break;
case 2:
resultToUpdate = "racesSecond";
break;
case 3:
resultToUpdate = "racesThird";
break;
}
我想使用resultToUpdate变量来更改更新内容,但它不起作用。我整晚都在上班,我不知道出了什么问题
var update = {"$inc": { resultToUpdate : 1}}
User.findOneAndUpdate({
username: req.body.username
}, update, {}, callback)
编辑:它与标记的问题不同。问题是 - 为什么变量不能在mongoose更新中运行?是否必须按字面意思引用""而不是一个变量?
解决了这个问题。
switch (req.body.result) {
case 1:
update = {"$inc": {racesWon: 1}};
break;
case 2:
update = {"$inc": {racesSecond: 1}};
break;
case 3:
update = {"$inc": {racesThird: 1}};
break;
}
编辑:旧方式不起作用,因为 - 您无法使用动态'初始化对象密钥。