Mongoose - 没有参考的Nest模式?

时间:2017-04-13 19:12:05

标签: mongoose mongoose-schema

我有一个带有交易(银行交易)和RepeatingTransactions的应用程序(例如每月自动支付账单)。我想定义一个RepeatingTransaction Schema,它有一个基本Transaction事务字段,每次必须完成时它都可以复制到Transaction集合。我不想使用引用来执行此操作,因为应用程序在应用程序的其他部分使用Transactions集合。 (我花了一些时间搞清楚业务逻辑,这样做很好,我不想改变它。)

理想的情况是,如果有办法将我的Transaction模式嵌套到RepeatingTransaction以避免代码重复。

那么有没有一种方法可以在没有引用的情况下嵌套模式?

1 个答案:

答案 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);