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

Ale*_*uck 5 mongoose node.js mongoose-schema

简单的问题:

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

Pau*_*aul 13

那么你有一个静态方法(例如)你的用户,博客,评论和警报模型都共享而没有任何实施差异?

将行为应用于Mongoose中的多个不同模型的事实上的方法是通过插件,您可以执行全局插件.我会坚持传统的语法,但如果你想使用ES6导入和导出感觉自由.

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

这定义了一个可以应用于单个模式的插件,如下所示:

userSchema.plugin(require('./plugins/echo'));
Run Code Online (Sandbox Code Playgroud)

或者对项目中的所有模型都这样:

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

mongoose.plugin(echoPlugin);
Run Code Online (Sandbox Code Playgroud)