我有一个带有交易(银行交易)和RepeatingTransactions的应用程序(例如每月自动支付账单)。我想定义一个RepeatingTransaction Schema,它有一个基本Transaction事务字段,每次必须完成时它都可以复制到Transaction集合。我不想使用引用来执行此操作,因为应用程序在应用程序的其他部分使用Transactions集合。 (我花了一些时间搞清楚业务逻辑,这样做很好,我不想改变它。)
理想的情况是,如果有办法将我的Transaction模式嵌套到RepeatingTransaction以避免代码重复。
那么有没有一种方法可以在没有引用的情况下嵌套模式?
答案 0 :(得分:0)
你可以这么做。只需将Schema嵌套在其他Schema中,它就能正常工作。
我做错了是我尝试将模型放入模式中。为了在我的name
文件夹中轻松解决问题,我有一个交易模型:
./model
);
和RepeatingTransaction模型:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const TransactionSchema = require('./schemas/transaction-schema');
TransactionSchema.pre('save', function (next) {
this.createdAt = new Date();
next();
});
module.exports = mongoose.model('Transaction', TransactionSchema
当然还有一个TransactionSchema:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const TransactionSchema = require('./schemas/transaction-schema');
let RepeatingTransactionSchema = new Schema({
user: {type: Schema.Types.ObjectId, ref: 'User'},
transaction: {type: TransactionSchema, required: [true, 'Transation is required']},
period: {type: String, required: [true, 'Interval is required']},
nextDate: {type: Date, required: [true, 'Date is required']}
});
module.exports = mongoose.model('RepeatingTransaction', RepeatingTransactionSchema);