首页 > 解决方案 > 在 Node.js 和 MongoDB 上获取基于父数据的引用 ID

问题描述

我正在尝试products根据orders productsid 获取数据,下面是我的Order模型

import mongoose from 'mongoose';

const { ObjectId, String, Number } = mongoose.Schema.Types;

const OrderSchema = new mongoose.Schema({
    user: {
        type: ObjectId,
        ref: "User"
    },
    products: [
        {
            quantity: {
                type: Number,
                default: 1
            },
            product: {
                type: ObjectId,
                ref: "Product"
            }
        }
    ],
    email: {
        type: String,
        required: true
    },
    total: {
        type: Number,
        required: true
    },
    status: {
        type: String,
        required: true,
        default: 'pending',
        enum: ["pending", "delivered"]
    }
},{
    timestamps: true
});

export default mongoose.models.Order || mongoose.model("Order", OrderSchema);

产品型号:

import mongoose from 'mongoose';

const { String, Number } = mongoose.Schema.Types;

const ProductSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    price: {
        type: Number,
        required: true
    },
    productType: {
        type: String,
        required: true
    },
    sku: {
        type: String,
        unique: true
    },
    description: {
        type: String,
        required: true
    },
    mediaUrl: {
        type: String,
        required: true
    }
},{
    timestamps: true
});

export default mongoose.models.Product || mongoose.model('Product', ProductSchema);

所有订单的查询如下:

const orders = await Order.find()
    .sort({ createdAt: 'desc' })
    .populate({
        path: "products.product",
        model: "Product"
    });
// console.log(orders)
res.status(200).json({ orders });

这个概念是在创建使用产品 ID 创建的订单时,我想根据订单产品 ID 获取产品。

这样它就显示出来了

MongooseError [MissingSchemaError]:尚未为模型“产品”注册架构。

我该如何解决?

谢谢

标签: javascriptnode.jsmongodbexpress

解决方案


Order模型中,您可能会导入Product模型,然后在ref不带引号的情况下使用

ref: Product

我就是这么想的。

谢谢


推荐阅读