我正在尝试更新json类型字段中的特定值。
我的文档架构如下所示:
character
{
name: {type: string},
experience: {type: json}
...
}
我确保体验总是包含一个包含2个字段的json对象:
{ unspent: number, total: number }
我正在尝试制作一个通用的更新方法,并且在运行良好的Windows上:
'update': function (itemid, update, callback) {
model.update({'id': itemid}, update, {multi: false}, callback);
}
更新得到一个req.body.fields对象,它是一个包含我想要更新的“字段”的json对象,例如。
{'experience.total': 5}
当我在我的Windows开发盒上运行它时,这工作正常。然而,当我在我的linux登台服务器上尝试它时,mongoose似乎没有拿起它需要更新的内容。
我更新其他字段没有问题(例如我的例子中的'name')
谢谢!
答案 0 :(得分:1)
经过一些挖掘并在JohnnyHK的帮助下找到解决方案:
不要使用JSON类型(我希望mongoose会抱怨我的架构无效) 当你知道你的类型是什么样的时候,不要使用混合类型。
我将架构更改为:
experience: {
unspent: String,
total: String
},
并使用更新将我的.markModified和.Save()功能还原为它的原始形式,它有效!