【发布时间】:2016-02-26 13:43:22
【问题描述】:
我的架构如下所示:
var exampleSchema = newSchema({
profile:{
experience :[{
exp : String
}]
}
});
这是更新个人资料收集经验的代码:
exampleSchema.statics.experience = function (id,experience, callback){
var update = {
$push: {
'profile.experience': experience
}
}
this.findByIdAndUpdate(id,update,function(err) {
if (err) {
callback(err);
} else {
callback(null);
}
})
我收到了类似The field 'profile.experience' must be an array but is of type String in document {_id: ObjectId('5653f1d852cf7b4c0bfeb54a')}[object Object]的错误
console.log(experience) 等于
{ exp: 'jlkjlkjlk' }
我的收藏应该是这样的:
experience:[
{
exp : "YYYY"
},
{
exp:"xxxx"}
]
【问题讨论】:
-
您正在尝试更新不是数组的字段“profile.experience.**exp**”。您必须将 $push 应用于“profile.experience”。
-
很抱歉我遇到了同样的错误
-
您的架构定义不明确。经验定义为
experience :[{ exp : String ]},应为experience :[{ exp : String **}]** -
谢谢,但在我的示例中,它的定义是正确的......
-
你能确定所有插入'profile.experience'的记录都是数组吗?您似乎在文档中有一个字符串 {_id: ObjectId('5653f1d852cf7b4c0bfeb54a')}
标签: arrays node.js mongodb mongoose