猫鼬多个鉴别器的奇怪行为

时间:2020-02-07 15:19:17

标签: node.js express schema mongoose-schema discriminator

我正在为房地产开发应用程序,并在2个收藏集中构建数据库。一个用于出售物业,第二用于出租物业。我使用区分符为房屋,公寓,土地等创建架构。因此,我为基础创建了2个架构。


const baseOptions = {
  discriminatorKey: 'propertyType',
  collection: 'property_rent'
}

const propertyRentSchema = new Schema({
  title: {
    type: String,
    required: [true, 'Title is required'],
    trim: true
  },
  sold: {
    type: Boolean,
    default: false
  },
  **additionalFieldForRent: {
    type: String,
    required: true
}**
}, baseOptions)

const PropertyRent = mongoose.model('Property_Rent', propertyRentSchema);

module.exports = PropertyRent; 

这是第一个基本架构,这是另一个可以说它们相似的地方,但唯一的区别是一个必填字段

const baseOptions = {
  discriminatorKey: 'propertyType',
  collection: 'property_sell'
}

const propertySellSchema = new Schema({
  title: {
    type: String,
    required: [true, 'Title is required'],
    trim: true
  },
  sold: {
    type: Boolean,
    default: false
  }
}, baseOptions)

const PropertySell = mongoose.model('Property_Sell', propertySellSchema);

module.exports = PropertySell; 

他们在工作,我创建了我的分割收藏集property_sell,property_rent,一切正常。

最后这是hotelSchema的示例

const houseSchema = new Schema({
  houseType: {
    type: String,
    enum: ['apartment', 'studio', 'duplex', 'flat'],
    required: [true, 'You must set property type']
  },
  rooms: {
    type: Number,
    min: 1
  }
}, {
  toJSON: { virtuals: true },
  toObject: { virtuals: true }
})

**const HouseRent = propertyRent.discriminator('House_Rent', houseSchema);
const HouseSell = propertySell.discriminator('House', houseSchema);**

module.exports = {
  HouseRent,
  HouseSell
}

在这里,当我向不同的基本模型House_Rent和House_Sell propertyType添加房屋架构时, discriminatorKey)的两个集合都将具有House_Sell的值,因为

**const HouseSell = propertySell.discriminator('House_Sell', houseSchema);**

在底部... 真正的问题是,PropertyRentSchema需要字段时,PropertySellSchema也需要字段,因此不会划分模式,但是它们使用不同的集合。

0 个答案:

没有答案