如何在 Mongoose 的所有模式中设置公共属性?

Posted

技术标签:

【中文标题】如何在 Mongoose 的所有模式中设置公共属性?【英文标题】:How to set common property across all schema in Mongoose? 【发布时间】:2017-05-13 11:34:51 【问题描述】:

在我的项目中,我有多个猫鼬模式。要求是在所有模式中添加新属性。我想避免在所有模式中复制粘贴相同的东西。寻找替代方案。

谢谢

【问题讨论】:

Mongoose: extending schemas的可能重复 【参考方案1】:

实现了上述要求,跨架构共享公共属性,(扩展架构)。以下是步骤,

创建了一个具有所有公共属性的对象,例如,

var baseProperty = 
    deleted     :   Boolean
    createdBy   :   String,
    updatedBy   :   String,
    createdAt   :   Date,
    updatedAt   :   Date,
;

然后按以下方式在不同的模式中使用,

/** SCHEMA 1 **/ 
var userSchema = new Schema(
    name    :   String,
    mobile  :   String,
    email   :   String,
, );
userSchema.add(baseProperty);      // Injecting common property in schema
mongoose.model("User", userSchema); 


/** SCHEMA 2 **/
var addressSchema = new Schema(
    city    :   String,
    state   :   String,
    country   : String,
, );
addressSchema.add(baseProperty);  // Injecting common property in schema
mongoose.model("Address", addressSchema); 

现在上面的模式已经准备好注入属性,用于 CRUD 操作。

【讨论】:

别提了,我用的mongoose版本是4.7.5

以上是关于如何在 Mongoose 的所有模式中设置公共属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Mongoose模式中设置数组大小的限制

如何在 Mongoose 中设置数据库名称和集合名称?

从 Mongoose 获取模式中设置为唯一的字段

在 @nestjs/mongoose 中设置 mongoose 全局选项

Mongoose:当要保存的文档中不存在时,在必填字段中设置默认值

使用 mongoose 在 mongodb 中设置集合的到期时间