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

时间:2016-12-29 06:59:44

标签: mongoose

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

谢谢

1 个答案:

答案 0 :(得分:2)

实现了上述要求,在模式中共享公共属性(扩展模式)。以下是步骤,

使用所有公共属性创建一个对象,例如

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操作,上面的模式已经准备好了inject属性。