Mongoose - 向所有模型添加全局方法

Mongoose - add global method to all models

简单问题:

如何在 Mongoose 中向我的模型添加静态方法,使其适用于每个模型而不是一个模型?

所以您有一个静态方法,(例如)您的用户、博客、评论和警报模型在实现上没有任何差异地共享?

在 Mongoose 中将行为应用于多个不同模型的实际方法是通过插件,您可以做一个全局插件。我会坚持使用传统语法,但如果您想使用 ES6 导入和导出,请随意。

// ./models/plugins/echo.js
module.exports = function echoPlugin(schema, options) {
  schema.statics.echo = function(){ console.log('Echo'); }
}

它定义了一个可以像这样应用于单个模式的插件:

userSchema.plugin(require('./plugins/echo'));

或者您项目中的所有模型,如下所示:

// somewhere in your app startup code
var mongoose = require('mongoose');
var echoPlugin = require('./models/plugins/echo');

mongoose.plugin(echoPlugin);