2017-04-13 148 views
0

我有一個交易(銀行交易)和重複交易(例如自動支付您的賬單每月)的應用程序。我想定義一個RepeatingTransaction模式,它有一個基本的Transaction字段,每次必須完成時它都可以複製到Transaction集合中。我不想這樣做,因爲應用程序在應用程序的其他部分使用Transactions集合。 (我花了一些時間弄清楚業務邏輯,這種方式很好,我不想改變它)。貓鼬巢模式沒有參考?

理想的情況是,如果有辦法將我的Transaction模式嵌套到RepeatingTransaction以避免代碼重複。

那麼有沒有辦法嵌套架構沒有參考?

回答

0

你可以簡單地做到這一點。只需將您的Schema嵌入到其他Schema中,它就可以正常工作。

我做錯了什麼是我試圖把模型放入我的模式。輕鬆解決問題,我./model文件夾我有一個交易模型:

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 

);

並有RepeatingTransaction模型:

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

當然還有一個TransactionSchema太:

const mongoose = require('mongoose'); 
const Schema = mongoose.Schema; 

let TransactionSchema = new Schema({ 
    ... 
}); 

module.exports = TransactionSchema;