我可以在模型创建后添加mongoose插件吗?

时间:2017-01-03 14:42:01

标签: node.js mongodb mongoose

我有一种情况需要在mongoose模型中添加一个插件,但每次使用它时都可能会更改传递给该插件的选项。

见下面的例子:

const PersonnelSchema = new Schema({
    _id: { type: Schema.ObjectId },
    GivenName: { type: String },
    FamilyName: { type: String }
});
module.exports = mongoose.model('Personnel', PersonnelSchema, 'Personnel');

我希望能够做的是在使用模型时添加插件,以便我可以将参数传递给它。

我尝试在使用它时将插件添加到模型上的架构对象中,例如:

 objModel.schema.plugin(mongoosastic, {
                index: strIndexName,
                transform: (data) => {
                    data.TenantDB = strTenantDB;
                    return data;
                }
});

但这只会将插件方法添加到架构对象的静态中,并且不会在模型上正确初始化插件。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

发布后不久我发现我可以通过在将插件附加到模式后调用我的模型上的编译来实现这一点,例如:

objModel.schema.plugin(mongoosastic, objOptions);
return objModel.compile(objModel.modelName, objModel.schema, objModel.collection.name, objModel.db, mongoose);