【问题标题】:Populate in mongoose returns array of _ids填充猫鼬返回_ids数组
【发布时间】:2019-07-17 09:26:49
【问题描述】:

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

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"}]}]

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-populate


    【解决方案1】:

    我认为您的UserSchema 的定义方式存在问题。我的假设是在books 的定义中包含rateshelve 会导致问题。

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

    【讨论】:

    • 我试过了,但什么也没发生,当我只使用书籍时,会返回一个空数组
    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2015-07-13
    • 2023-03-21
    相关资源
    最近更新 更多