猫鼬不填充子文档

时间:2020-09-01 15:30:48

标签: node.js mongoose mongoose-schema

猫鼬可以处理多少个级别的子文档?我有一个相当复杂的Schema,其结构如下(不是最好的结构,但是我试图保留来自早已消失的人开发的前端的JSON文档):

const LineItemSchema = new Schema({
  amount: Number,
  frequency: String,
  hourlyHours: Number,
  hourlyPeriod: String
});

const IncomeSourceSchema = new Schema({
  has: Boolean,
  lineItems: [{LineItemSchema}]
});

const AdultSchema = new Schema({
 name: String,
 incomeTypes: {
   military: {
     isApplicable: Boolean,
     sources: {
       basic: {IncomeSourceSchema},
       allowance: {IncomeSourceSchema}
     }
 }
});

const DataSchema = new Schema({
  adults: [AdultSchema],
  signed: {Date, default: Date.now}
});

module.exports = mongoose.model("Data", DataSchema);

这很好,但是当我发送以下JSON时:

{
   signed: 10/10/2020,
   adults: [{
     name: "John Doe",
     incomeTypes: {
      military: {
        isApplicable: true,
        sources: {
         basic: {
           has: true,
           lineItems: {
             amount: 15,
             frequency: "hourly",
             hourlyHours: 40,
             hourlyPeriod: "weekly"
           }
        }
      }
     }

}

在我的控制器中,我将其映射如下:

   let appData = new Data({
     signed: req.body.signed,
     adults:[{
       name: req.body.adults[0].name,
       incomeTypes: {
         military: {
           isApplicable: req.body.adults[0].incomeTypes.military.isApplicable,
           sources: {
         basic: {
           has: req.body.adults[0].incomeTypes.military.sources.basic.has,
           lineItems: {
             amount: req.body.adults[0].incomeTypes.military.sources.basic.lineItems.amount,
             //etc...
           }             
           }
         }
       }
   })

我在Mongo中看到以下内容:

 adults: [{
     name: "John Doe",
     incomeTypes: {
      military: {
        isApplicable: true
      }
     }

我做错什么了吗?仅供参考,我已经对实际代码进行了重大修改,因为其中有很多内容……但这是我正在做的事情的基本要点。

0 个答案:

没有答案