在将对象推入子数组后,我试图保存使用Mongoose建模的对象。
MyObject.findOne({name:'someName'}, function (err, myObject) {
if (err) throw err;
myObject.subArray.push({someKey: 'someString'});
myObject.save(function(err) {
if (err) throw err;
console.log()
});
}
当我在mongo shell中运行以下查询时:
db.myobjects.find({name:'someName'})
我收到以下回复:
{
"_id" : ObjectId("54d35cefa5c07abb14955bc3"),
"name" : "someName",
"subArray" : [
"[object Object]"
]
}
如您所见,推入subArray
的对象已保存为字符串。
MyObject模型的Schema如下:
var MyObjectSchema = new Mongoose.Schema ({
name : String,
subArray : [{
someKey : String
}]
});
我做错了什么?
答案 0 :(得分:0)
您的myObject.subArray.push({someKey: 'someString'});
必须是myObject['subArray'] = [{someKey: 'someString'}];
答案 1 :(得分:0)
我能够通过创建子文档架构来解决问题:
var SubArraySchema = new Mongoose.Schema({
someKey : String
}, {_id : false});
var MyObjectSchema = new Mongoose.Schema ({
name : String,
subArray : [SubArraySchema]
});