2016-01-22 7 views
0

Mongoose не очень хорошо играет с населением. это моя модельmongoose populate возвращает null array

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

База данных выглядит правильно.

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

Но когда я делаю я получаю Заполнить массив пустой «Книги»

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

      if(data){ 

      } 
}); 

Все там просто не будет заполнить. Любые предложения будут ценны.

ответ

2

Похоже, что неправильный ref в userSchema, он должен ссылаться на схему book, а не на схему user.

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

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

Это было. иногда его очевидное, спасибо –

Смежные вопросы