猫鼬填充返回空数组

Posted

技术标签:

【中文标题】猫鼬填充返回空数组【英文标题】:mongoose populate returns null array 【发布时间】:2016-04-28 12:14:54 【问题描述】:

猫鼬与人口的关系并不好。这是我的模特

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)

            
);

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

【问题讨论】:

【参考方案1】:

userSchema 中的 ref 似乎不正确,它应该引用 book 架构而不是 user 架构本身。

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

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

【讨论】:

以上是关于猫鼬填充返回空数组的主要内容,如果未能解决你的问题,请参考以下文章

当填充涉及猫鼬时如何返回文档内容数组

从猫鼬填充中获取非空数据[重复]

从猫鼬填充中获取非空数据[重复]

Mongoose 填充返回空数组

Mongoose 填充返回空数组

尽管路径被填充,猫鼬填充()返回未定义