【发布时间】:2015-03-28 10:21:30
【问题描述】:
我正在尝试更新 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 登台服务器上尝试它时,猫鼬似乎没有得到它需要更新的内容。
我更新其他字段没有问题(例如我的示例中的“名称”)
谢谢!
【问题讨论】:
-
json不是标准的 Mongoose 类型之一,您的意思是Mixed? -
据我所知,我使用的类型是 JSON... 'Character': mongoose.model('character',{ id: {unique: true, type: String}, type :{type:String},名称:{type:String},googleId:{type:String},播放器:{type:JSON},编年史:{type:JSON},状态:{type:String},经验:{类型:JSON} ....}
-
我不知道我从哪里得到“JSON”类型的东西。可能是我开始的一个坏例子。我已经把类型改成了Schema.Types.Mixed,但是问题还是一样。
-
好的。如果
experience总是包含unspent和total字段,就像你描述的那样,你为什么不在你的模式中定义它而不是使用Mixed? -
边走边学。我已将其更改为体验:{未花费:字符串,总计:字符串},并且我已经清理/刷新了所有数据。但是,问题仍然存在:猫鼬默默地更新失败。
标签: json linux node.js mongodb mongoose