二级嵌套架构不填充

时间:2021-07-30 10:39:12

标签: node.js mongodb mongoose mongoose-populate

抱歉分享太长的代码。我只是认为它会澄清事情。我有两种拉取订单的方法。 (1) 源于 Order 模式。 (2) 从 User 模式中生根

我想专注于拉订单的第二种方式。我正在尝试像这样填充我的 User.find 查询:用户 > 订单 > 产品

enter image description here

但这就是我在邮递员测试中得到的全部内容。产品字段不会填充到我选择的字段。 enter image description here

// 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 );

0 个答案:

没有答案
相关问题