【问题标题】:mongoose .populate() is not populating even with variable set to ObjectId即使变量设置为 ObjectId,mongoose .populate() 也不会填充
【发布时间】:2021-04-26 09:48:17
【问题描述】:

这是我的“产品”模式模型:

const productSchema = new Schema({
  productName: String,
  productCategory: {
    type: Schema.Types.ObjectId,
    ref: "category",
  },
  productPrice: Number,
  productImageUrl: String,
});

这里是 GET 方法的路由器:

router.get("/", async (req, res) => {
  try {
    const products = await ProductModel.find().populate("category");
    res.status(200).json({ erorr: false, products });
  } catch (err) {
    res.status(500).json({ error: true, err });
  }
});

我实际上得到的是这样的:

"error": false,
"products": [
    {
        "_id": "6009f4bfd397734920c93ce8",
        "productName": "Milk",
        "productCategory": "6009d244332f2f22c40f90b4",
        "productPrice": 8,
        "productImageUrl":""

在 Mongo Compass 中,我可以看到“productCategory”设置为 ObjectId 值。

任何想法我做错了什么?

谢谢!

【问题讨论】:

    标签: mongodb mongoose mongodb-query mongoose-populate


    【解决方案1】:

    试试这个:

    const mongoose = require('mongoose');
    const Types = mongoose.Schema.Types;
    
    const productSchema = new Schema({
      productName: String,
      productCategory: {
        type: Types.ObjectId,
          ref: "category",
       },
      productPrice: Number,
      productImageUrl: String,
    });
    
     const products = await ProductModel.find({}).populate({path:"productCategory"});
    

    【讨论】:

      【解决方案2】:

      您应该将具有ref 的密钥按如下方式填充:

       const products = await ProductModel.find().populate("productCategory");
      
      

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 2020-05-18
        • 2016-02-14
        • 2021-03-03
        • 2021-08-25
        • 2012-07-04
        • 2012-05-21
        • 2021-07-19
        • 1970-01-01
        相关资源
        最近更新 更多