我有一个类似于以下内容的猫鼬对象模式:
var postSchema = new Schema({
imagePost: {
images: [{
url: String,
text: String
}]
});
我正在尝试使用以下内容创建新帖子:
var new_post = new Post();
new_post.images = [];
for (var i in req.body.post_content.images) {
var image = req.body.post_content.images[i];
var imageObj = { url: image['url'], text: image['text'] };
new_post.images.push(imageObj);
}
new_post.save();
但是,一旦我保存帖子,它就会为images属性创建一个空数组。我做错了什么?
答案 0 :(得分:6)
您在新对象中缺少架构的imagePost
对象。试试这个:
var new_post = new Post();
new_post.imagePost = { images: [] };
for (var i in req.body.post_content.images) {
var image = req.body.post_content.images[i];
var imageObj = { url: image['url'], text: image['text'] };
new_post.imagePost.images.push(imageObj);
}
new_post.save();
答案 1 :(得分:2)
我刚刚做了类似的事情,在我的情况下附加到现有的集合中,请看这个问题/答案。它可能对你有所帮助:
你的问题是在Mongoose中你不能拥有嵌套对象,只能嵌套Schema。所以你需要做这样的事情(对于你想要的结构):
var imageSchema = new Schema({
url: {type:String},
text: {type:String}
});
var imagesSchema = new Schema({
images : [imageSchema]
});
var postSchema = new Schema({
imagePost: [imagesSchema]
});