首页 > 解决方案 > 猫鼬'populate()'没有填充

问题描述

所以我用 MEARN 堆栈构建了一个简单的应用程序。

问题是我希望将用户信息(姓名、电子邮件等)放入产品的“用户”属性中,但它不起作用(邮递员请求返回 500 状态服务器错误),我不'不知道我做错了什么,提前谢谢!我的代码片段:

我的用户模型:

const mongoose = require('mongoose')

const UserSchema = mongoose.Schema({

    name : {
        type: String,
        required: true
    },
    email : {
        type: String,
        required: true,
        unique: true
    },
    password : {
        type: String,
        required: true
    },
    date : {
        type: Date,
        default: Date.now
    },
})

module.exports = mongoose.model('user',UserSchema)

我的产品型号:

const mongoose = require('mongoose')

const ProductSchema = mongoose.Schema({

    user:{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'users'
    },
    name : {
        type: String,
        required: true
    },
    description : {
        type: String,
        required: true
    },
    quantity : {
        type: Number,
        required: true
    },
    price : {
        type: Number,
        required: true
    },
    date : {
        type: Date,
        default: Date.now
    },
})

module.exports = mongoose.model('product',ProductSchema)

和我的要求:

router.get('/:id', async (req,res) => {
     try {
          const product = await Product.findById(req.params.id).populate('user')
          res.json(product)
     } catch (err) {
          res.status(500).send('Server Error')
     } 
 })

标签: mongodbexpressmongoosemongoose-populate

解决方案


您的ref值需要与模型user引用的名称相匹配。因此,您需要将其更改为:

user:{
    type: mongoose.Schema.Types.ObjectId,
    ref: 'user'
},

推荐阅读