抱歉分享太长的代码。我只是认为它会澄清事情。我有两种拉取订单的方法。 (1) 源于 Order 模式。 (2) 从 User 模式中生根
我想专注于拉订单的第二种方式。我正在尝试像这样填充我的 User.find 查询:用户 > 订单 > 产品
但这就是我在邮递员测试中得到的全部内容。产品字段不会填充到我选择的字段。
// User.js
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
email: {
type: String,
required: [true, "Email is required"]
},
password: {
type: String,
required: [true, "Password is required"]
},
isAdmin: {
type: Boolean,
default: false
},
orders: [
{
order: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Order'
},
_id: false
}
]
});
module.exports = mongoose.model("User", userSchema);
// Order.js
const mongoose = require("mongoose");
const orderSchema = new mongoose.Schema({
totalAmount: {
type: Number,
required: [true, "Total amount is required"]
},
purchasedOn: {
type: Date,
default: new Date()
},
buyer: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
products: [
{
product: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Product',
required: true
},
quantity: {
type: Number,
required: [true, "Product quantity is required."],
min: [1, "Minimum product quantity is 1."]
},
purchasePrice: {
type: Number,
min: [0, "Price cannot be negative."]
},
_id: false
}
]
});
module.exports = mongoose.model("Order", orderSchema);
// Product.js
const mongoose = require("mongoose");
const productSchema = new mongoose.Schema({
name: {
type: String,
required: [true, "Product name is required"]
},
sku: {
type: String,
required: [true, "Product SKU is required."]
},
description: {
type: String,
required: [true, "Product description is required"]
},
price: {
type: Number,
required: [true, "Product price is required"]
},
isActive: {
type: Boolean,
default: true
},
createdOn: {
type: Date,
default: new Date()
},
orders: [
{
order: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Order'
},
_id: false
}
]
});
module.exports = mongoose.model( "Product" , productSchema );