使用linux上的mongoose更新JSON类型字段中的特定字段

时间:2015-01-29 08:56:31

标签: json linux node.js mongodb mongoose

我正在尝试更新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')

谢谢!

1 个答案:

答案 0 :(得分:1)

经过一些挖掘并在JohnnyHK的帮助下找到解决方案:

不要使用JSON类型(我希望mongoose会抱怨我的架构无效) 当你知道你的类型是什么样的时候,不要使用混合类型。

我将架构更改为:

experience: {
    unspent: String,
    total: String
    },

并使用更新将我的.markModified和.Save()功能还原为它的原始形式,它有效!