我正在为房地产开发应用程序,并在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也需要字段,因此不会划分模式,但是它们使用不同的集合。