猫鼬 'populate()' 未填充

Mongoose 'populate()' not populating

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

问题是我想将用户的信息(姓名、电子邮件等...)放入产品的 'user' 属性 中,但它不起作用(邮递员请求 return 500 status Server error) ,我不知道我做错了什么,在此先感谢!我的代码片段:

我的用户模型:

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

您必须指定路径:populate({path:'user'}) 尝试:

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

您的 ref 值需要与模型 user 引用的名称相匹配。所以你需要把它改成:

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