7

次のようなマングースオブジェクトスキーマがあります。

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 に答える