Question: I have a mongoose object schema that looks similar to the following:

```
var postSchema = new Schema({
   imagePost: {
     images: [{
        url: String,
        text: String
     }]
 });

```

I'm trying to create a new post using the following:

```
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();

```

However, once I save the post, it's created with an empty array for the images property. What am I doing wrong?

Answer: 
You're missing the `imagePost` object of your schema in your new object. Try this instead:

```
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();

```
I've just done something similar, in my case appending to an existing collection, please see this question/answer. It may help you:

[Mongoose / MongoDB - Simple example of appending to a document object array, with a pre-defined schema](https://stackoverflow.com/questions/12630788/mongoose-mongodb-simple-example-of-appending-to-a-document-object-array-wit/12636885#12636885)

Your problem is that in Mongoose you can't have nested objects, only nested Schemas. So you need to do something like this (for your desired structure):

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

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

var postSchema = new Schema({
    imagePost: [imagesSchema]
});

```