2 votos

mongoose populate devuelve null Array

Mongoose no está jugando muy bien con la población. este es mi modelo

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

mongoose.connect(process.env.MONGO_URI);

var userSchema = new Schema({
  username: String,
  password: String,
  books: [{type: Schema.Types.ObjectId, ref: 'User'}]
  }
);

var bookSchema = new Schema({
  bookid: {type:String, unique:true, required:true},
  imgURL: String
});

module.exports.user = mongoose.model('User', userSchema);
module.exports.book = mongoose.model('Book', bookSchema);

La base de datos parece correcta.

{ "_id" : ObjectId("56a17cd70a498fcc37cdbe60"), "username" : "test", "password" : "test", "books" : [ ObjectId("56a17d21d43dc32a3a9837de"), ObjectId("56a17ee5d43dc32a3a9837e4"), ObjectId("56a17f5dd43dc32a3a9837e6"), ObjectId("56a17f9fd43dc32a3a9837e8") ], "__v" : 4 }

Pero cuando hago un populate me sale un 'books' Array vacío

users.findOne({'_id':userid}).populate('books').exec(function(err,data){
            if (err) return console.error(err);

            if(data){

            }
});

Todo está ahí, simplemente no se rellenará. Cualquier sugerencia será muy apreciada.

5voto

zangw Puntos 401

Parece que la incorrecta ref en el userSchema debe hacer referencia a book en lugar de user propio esquema.

var book = mongoose.model('Book', bookSchema);

...
books: [{type: Schema.Types.ObjectId, ref: 'book'}]

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X