代码之家  ›  专栏  ›  技术社区  ›  Woppi

有没有办法在mongoose中的另一个模式中重用模式文档属性?

  •  0
  • Woppi  · 技术社区  · 7 年前

    我有两个重复的模式 created modified 属性。mongodb中有没有办法重用它,而不是反复重复相同的代码?似乎找不到合适的短语来谷歌搜索这个。

    管理架构

    import mongoose from 'mongoose';
    
    const AdminSchema = new mongoose.Schema({
      _id: mongoose.Schema.Types.ObjectId,
      companyId: {
        id: mongoose.Schema.Types.ObjectId,
        ref: 'Company',
      },
      created: {
        at: {
          type: Date,
          default: Date.now,
        },
        by: String,
      },
      modified: {
        at: {
          type: Date,
          default: Date.now,
        },
        by: String,
      },
    });
    
    export default mongoose.model('Admin', AdminSchema);
    

    AdminPermissions架构

    import mongoose from 'mongoose';
    
    const AdminPermissionsSchema = new mongoose.Schema({
      _id: mongoose.Schema.Types.ObjectId,
      companyId: {
        id: mongoose.Schema.Types.ObjectId,
        ref: 'Company',
      },
      label: String,
      description: String,
      created: {
        at: {
          type: Date,
          default: Date.now,
        },
        by: String,
      },
      modified: {
        at: {
          type: Date,
          default: Date.now,
        },
        by: String,
      },
    });
    
    export default mongoose.model('AdminPermissions', AdminPermissionsSchema);
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Nilesh Singh    7 年前

    猫鼬让你可以选择 时间戳 您的文档在创建或更新过程中使用 createdAt updatedAt 属性。执行此操作,而不是使用 created modified ,

    const AdminSchema = new mongoose.Schema({
      _id: mongoose.Schema.Types.ObjectId,
      companyId: {
        id: mongoose.Schema.Types.ObjectId,
        ref: 'Company',
      },
      createdBy: String,
      modifiedBy: String,
    }, {timestamps: true}); //this is required
    
    export default mongoose.model('Admin', AdminSchema);
    

    和手柄 createdBy modifiedBy 分别地您可以像上面那样为所有模式声明添加时间戳。

    推荐文章