【问题标题】:Mongoose - Nest schemas without refs?Mongoose - 没有参考的嵌套模式?
【发布时间】:2017-04-14 03:44:19
【问题描述】:

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

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

那么有没有办法在没有引用的情况下嵌套模式?

【问题讨论】:

    标签: mongoose mongoose-schema


    【解决方案1】:

    您可以简单地做到这一点。只需将您的 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; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-06
      • 2016-06-12
      • 2014-03-02
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多