feat: export models ref to app (#1634)
let custom middleware can access app.models
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
sudo: false
|
||||
language: node_js
|
||||
node_js:
|
||||
- '8'
|
||||
- '10'
|
||||
- '12'
|
||||
services:
|
||||
- mysql
|
||||
- postgresql
|
||||
|
||||
@@ -302,16 +302,18 @@ var config = {
|
||||
|
||||
if (process.env.NODE_ENV === 'test') {
|
||||
config.enableAbbreviatedMetadata = true;
|
||||
config.customRegistryMiddlewares.push(() => {
|
||||
config.customRegistryMiddlewares.push((app) => {
|
||||
return function* (next) {
|
||||
this.set('x-custom-middleware', 'true');
|
||||
this.set('x-custom-app-models', typeof app.models.query === 'function' ? 'true' : 'false');
|
||||
yield next;
|
||||
};
|
||||
});
|
||||
|
||||
config.customWebMiddlewares.push(() => {
|
||||
config.customWebMiddlewares.push((app) => {
|
||||
return function* (next) {
|
||||
this.set('x-custom-web-middleware', 'true');
|
||||
this.set('x-custom-web-app-models', typeof app.models.query === 'function' ? 'true' : 'false');
|
||||
yield next;
|
||||
};
|
||||
});
|
||||
|
||||
12
index.js
12
index.js
@@ -1,17 +1,5 @@
|
||||
/**!
|
||||
* Copyright(c) cnpmjs.org and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var config = require('./config');
|
||||
|
||||
exports.loadConfig = config.loadConfig;
|
||||
|
||||
@@ -1,19 +1,5 @@
|
||||
/**!
|
||||
* cnpmjs.org - models/module.js
|
||||
*
|
||||
* Copyright(c) fengmk2 and other contributors.
|
||||
* MIT Licensed
|
||||
*
|
||||
* Authors:
|
||||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
/*
|
||||
CREATE TABLE IF NOT EXISTS `module` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
|
||||
|
||||
@@ -16,6 +16,7 @@ var block = require('../middleware/block');
|
||||
var auth = require('../middleware/auth');
|
||||
var staticCache = require('../middleware/static');
|
||||
var notFound = require('../middleware/registry_not_found');
|
||||
var models = require('../models');
|
||||
var cors = require('kcors');
|
||||
var proxyToNpm = require('../middleware/proxy_to_npm');
|
||||
var maxrequests = require('koa-maxrequests');
|
||||
@@ -52,6 +53,7 @@ app.use(notFound);
|
||||
app.use(conditional());
|
||||
app.use(etag());
|
||||
|
||||
app.models = models;
|
||||
for (const middleware of config.customRegistryMiddlewares) {
|
||||
app.use(middleware(app));
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ var auth = require('../middleware/auth');
|
||||
var proxyToNpm = require('../middleware/proxy_to_npm');
|
||||
var routes = require('../routes/web');
|
||||
var config = require('../config');
|
||||
var models = require('../models');
|
||||
var jsonp = require('koa-safe-jsonp');
|
||||
var path = require('path');
|
||||
var http = require('http');
|
||||
@@ -42,6 +43,8 @@ if (config.pagemock) {
|
||||
}));
|
||||
}
|
||||
|
||||
// add app.models, let middleware can access models ref
|
||||
app.models = models;
|
||||
for (const mw of config.customWebMiddlewares) {
|
||||
app.use(mw(app));
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ describe('test/controllers/registry/package/list.test.js', () => {
|
||||
var data = res.body;
|
||||
data.name.should.equal('@cnpmtest/testmodule-list-1');
|
||||
assert(res.headers['x-custom-middleware'] === 'true');
|
||||
assert(res.headers['x-custom-app-models'] === 'true');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -82,6 +82,7 @@ describe('controllers/web/user/show.test.js', function () {
|
||||
// he.enclde('fengmk2@gmail.com') ↓
|
||||
assert(res.text.includes('fengmk2@gmail.com'));
|
||||
assert(res.headers['x-custom-web-middleware'] === 'true');
|
||||
assert(res.headers['x-custom-web-app-models'] === 'true');
|
||||
done()
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user