用猫鼬填充返回_ids数组

时间:2019-02-23 12:06:09

标签: node.js mongodb mongoose mongoose-populate

我正在通过MERN堆栈为好读创建模拟 当我使用填充来检索特定用户的书时,它返回空数组,我做了很多搜索,但徒劳无功 这是我的模特

const userSchema =new mongoose.Schema({
firstName:{
    type:"string",required:true
},
books:[{
    book:{type:mongoose.Schema.Types.ObjectId,ref:'Book'},rate:Number,shelve:''
}]});

这是书籍模型

const bookSchema =new mongoose.Schema({
title :{
    type:"string",required:true
}});

这就是我使用填充方式

router.get("/one", (req, res, next) => {
User.find({firstName : "John"}).populate("books.book").exec(function (err, user) { 
    res.json(user)
 });
})

这是生成的JSON

[{"_id":"5c70f299ef088c13a3ff3a2c","books":
[{"_id":"5c708c0077a0e703b15310b9"},{"_id":"5c708c0077a0e703b15310ba"},
 {"_id":"5c708c0077a0e703b15310bb"},{"_id":"5c708c0077a0e703b15310bd"}]}]

1 个答案:

答案 0 :(得分:0)

我认为这与UserSchema的定义方式有关。我的假设是在rate的定义中包含shelvebooks会引起问题。

尝试删除这些字段以开始,然后仅填充books而不是books.book。如果可行,那么我真的会重新考虑将这些字段放在您拥有它们的位置。以我个人的观点,我认为它们在BookSchema中看起来更好,因为UserSchema中的每本书都分别具有rateshelve。希望这会有所帮助!