javascript - 如何在猫鼬数据库中实现继承以获得良好的编码实践?
问题描述
我有 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 个从父模式继承的模式?提前致谢
解决方案
推荐阅读
- spring - Spring Boot 过滤器中的模拟 Rest API 调用
- angular - ng snotify 登录后不显示烤面包机
- kubernetes - 如何获取有关 Kubernetes 集群中扩展 pod 的信息
- excel - 使用 VB.Net 在数据库中导入 Excel 数据
- firebase - Flutter & Firebase:基于key访问数据
- python - FileNotFoundError:[Errno 2] 没有这样的文件或目录:尝试从另一个包获取访问权限时
- c# - 为什么我的自定义 pin 仅显示 Xamarin Forms Maps 中最后一个 pin 的标签?
- c# - 如何在 C# 中生成使用 RS256 算法签名的 JWT 令牌
- agora.io - 如果将其他用户的客户端角色更改为 CLIENT_ROLE_BROADCASTER,则现有用户的麦克风不起作用
- javascript - 我怎样才能更好地编写这个音频播放代码?