mongoose populate返回null数组

cha*_*idt 2 mongodb node.js

猫鼬在人口方面表现不佳.这是我的模特

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);
Run Code Online (Sandbox Code Playgroud)

数据库看起来正确.

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

但是当我做一个填充时,我得到一个空的'书'阵列

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

            if(data){

            }
});
Run Code Online (Sandbox Code Playgroud)

一切都在那里它根本就不会填充.任何建议将不胜感激.

zan*_*ngw 5

看来不正确refuserSchema,应该参考book的模式,而不是user模式本身.

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

...
books: [{type: Schema.Types.ObjectId, ref: 'book'}]
Run Code Online (Sandbox Code Playgroud)