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

Is there a way to reuse schema document properties in another schema in mongoose?

我有两个模式,它们具有重复的 createdmodified 属性。 mongodb 有没有办法重用它而不是一遍又一遍地重复相同的代码?似乎找不到合适的词组来 google 搜索这个。

管理模式

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

Mongoose 为您提供了在创建或更新文档期间使用 createdAtupdatedAt 属性 timestamp 的选项。这样做而不是使用 createdmodified,

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

并分别处理createdBymodifiedBy。您可以像上面那样为所有模式声明添加时间戳。