eggjs / eggjs/egg-mongoose

Can application object be accessed in mongoose plugins?

Open
#62 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
443
Forks
102
PR merge metrics
No merged PRs in 30d

Description

I insert some configs in app object, and I hope to get it in mongoose plugins, can this feature be added.
And I think it can be handled this way.
```javascript
module.exports = app => {
const { client, clients, url, options, defaultDB, customPromise, loadModel, plugins, aPlugins } = app.config.mongoose;
...
if (Array.isArray(aPlugins)) {
aPlugins.forEach(plugin => {
mongoose.plugin.apply(mongoose, insertApp(app, plugin));
});
}
...
};
function createOneClient(config, app) {
const { url, options, plugins, aPlugins } = config;
...
[].concat(plugins || [], (aPlugins || []).map(plugin => insertApp(app, plugin)), globalPlugins).forEach(plugin => {
mongoose.plugin.apply(mongoose, Array.isArray(plugin) ? plugin : [ plugin ]);
});
...
}
...
function insertApp(app, plugin) {
if (Array.isArray(plugin)) {
plugin[0] = plugin[0](app);
return plugin;
}
return [ plugin(app) ];
}
```
config like this
```javascript
exports.mongoose = {
url: process.env.MONGODB_URL_3,
options: {},
aPlugins: [ lastModifiedPlugin, [ lastModifiedPlugin, { field: 'updatedAt' }]],
};
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.