Javascript 在MongoDB中被推入子数组并保存为字符串的对象
在将对象推入子数组之后,我尝试保存使用Mongoose建模的对象Javascript 在MongoDB中被推入子数组并保存为字符串的对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,在将对象推入子数组之后,我尝试保存使用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
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]"
]
}
如您所见,推入子数组的对象已保存为字符串
MyObject模型的模式如下所示:
var MyObjectSchema = new Mongoose.Schema ({
name : String,
subArray : [{
someKey : String
}]
});
我做错了什么?您的
myObject.subArray.push({someKey:'someString'})代码>
必须是myObject['subArray']=[{someKey:'someString'}]代码>我通过创建子文档架构解决了这个问题:
var SubArraySchema = new Mongoose.Schema({
someKey : String
}, {_id : false});
var MyObjectSchema = new Mongoose.Schema ({
name : String,
subArray : [SubArraySchema]
});
但这不会添加到现有的数组中,只需替换它。你能给我们看看模式吗?@wdberkeley我已经用模式更新了这个问题。