填充mongoose返回_ids数组

问题描述 投票:1回答:1

我正在通过MERN堆栈为goodreads创建模拟,当我使用populate检索特定用户的书籍时,它返回空数组,我已经做了很多搜索但是徒劳无功这里是我的模型

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

这就是我使用populate的方式

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"}]}]
node.js mongodb mongoose mongoose-populate
1个回答
0
投票

我认为这是你的UserSchema如何定义的问题。我的假设是在rate的定义中包括shelvebooks导致了这个问题。

尝试删除这些字段开始,只填充books而不是books.book。如果这样有效,那么我真的会重新考虑将这些领域放在你拥有它们的地方。根据我个人的观点,我认为他们在BookSchema看起来更好,因为UserSchema的每本书都有rateshelve。希望这可以帮助!!

© www.soinside.com 2019 - 2024. All rights reserved.