首页 > 解决方案 > 如何在猫鼬数据库中实现继承以获得良好的编码实践?

问题描述

我有 2 种不同类型的付款,一种应收到预订,另一种应收到订阅。“一旦用户接受预订即接受预订付款”,但必须在验证成功后立即收取“订阅付款”。但是,当我尝试在我的 ANGULAR 应用程序中显示我的待处理付款时,我意识到现在我在同一个“付款表”中有 2 种不同类型的付款,其中一些是无效的,因为第一个模式正在接收预订和其他付款,我有订阅。

我创建了 2 个不同的模式,但它们太相似了,我希望有良好的编码实践,所以我想在我的 mongoose 模式中创建一个继承架构。我也尝试使用Schema.Types.Mixed,但我不喜欢这种方法,因为我认为它不安全。

付款方式

const rentalPaymentSchema = new Schema({
    fromUser: {type:Schema.Types.ObjectId, ref: 'User'},
    toUser: {type:Schema.Types.ObjectId, ref: 'User'},
    ...
    booking: {type:Schema.Types.ObjectId, ref: 'Booking'},
});
module.exports = mongoose.model('RentalPayment', rentalPaymentSchema );

订阅模式

const subscriptionPaymentSchema = new Schema({
    fromUser: {type:Schema.Types.ObjectId, ref: 'User'},
    toUser: {type:Schema.Types.ObjectId, ref: 'User'},
    ...
    susbscription: {type:Schema.Types.ObjectId, ref: 'Subscription'},
});
module.exports = mongoose.model('SubscriptionPayment', subscriptionPaymentSchema );

如何将两种模式合并为一个具有所有共同属性的模式,然后再创建 2 个从父模式继承的模式?提前致谢

标签: javascriptinheritancemongoosedatabase-designarchitecture

解决方案


推荐阅读