我已经看到很多示例,其中展示了如何在模式上实现自定义转换函数(例如toJSON()
,但可能是另一个名称)。
但我不想继续为“每个”架构复制代码。有没有办法在全局实现它一次,这样它将自动被所有模式继承?
以下是我想要的toJSON()
示例。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
/**
* toJSON implementation
*/
Schema.options.toJSON = {
transform: function(doc, ret, options) {
ret.id = ret._id;
delete ret._id;
delete ret.__v;
return ret;
}
};
我想添加一些额外的“全局”功能,如上图所示。
更新2018.02.13 :我在不同的模块中定义我的模型(模式)(每个模块都有自己的.js
文件)。例如,我将有一个account/schema.js
模块,一个profile/schema.js
模块等等。我的应用程序中至少有30多个模式。
答案 0 :(得分:2)
修改:您可能也对Mongoose Plugins感兴趣。
-
您可以在共享模块中定义该功能,并在您定义模式的任何位置导入该模块。然后,您可以通过将架构[{1}}设置为此中央共享toJSON
功能来实现您的目标。
toJSON
-
/** sharedFunctions.js **/
function toJSON(...) { ... }
module.exports = { toJSON: toJSON }