7

我有一个类似于以下内容的 mongoose 对象架构:

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 属性的空数组创建。我究竟做错了什么?

4

2 回答 2

7

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();
于 2012-10-01T17:17:51.363 回答
4

我刚刚做了类似的事情,在我的情况下附加到现有集合中,请参阅此问题/答案。它可以帮助您:

Mongoose / MongoDB - 附加到文档对象数组的简单示例,具有预定义的模式

您的问题是在 Mongoose 中您不能有嵌套对象,只有嵌套模式。所以你需要做这样的事情(对于你想要的结构):

var imageSchema = new Schema({
    url: {type:String},
    text: {type:String}
});

var imagesSchema = new Schema({
    images : [imageSchema]
});

var postSchema = new Schema({
    imagePost: [imagesSchema]
});
于 2012-10-01T16:16:02.653 回答