0

我想像 ExpressJS Doc 中的示例一样进行多个路由器设置。我有 index.js , api1 , api2 如下所示。如何将 db 对象从 index.js 传递给 api1 和 api2?

我尝试 app.use('/api/v1', require('./controllers/api_v1')(db));

但它显示错误:Router.use() requires a middleware function but got a Object

index.js:

var express = require('../..');
const knex = require('knex');
const config = require('./config');

var app = module.exports = express();
const db = knex(config.db);

app.use('/api/v1', require('./controllers/api_v1'));
app.use('/api/v2', require('./controllers/api_v2'));

app.get('/', function(req, res) {
  res.send('Hello from root route.')
});

/* istanbul ignore next */
if (!module.parent) {
  app.listen(3000);
  console.log('Express started on port 3000');
}

api_v1.js

var express = require('../../..');

var apiv1 = express.Router();

apiv1.get('/', function(req, res) {
  res.send('Hello from APIv1 root route.');
});

apiv1.get('/users', function(req, res) {
  res.send('List of APIv1 users.');
});

module.exports = apiv1;

api_v2.js

var express = require('../../..');

var apiv2 = express.Router();

apiv2.get('/', function(req, res) {
  res.send('Hello from APIv2 root route.');
});

apiv2.get('/users', function(req, res) {
  res.send('List of APIv2 users.');
});

module.exports = apiv2;
4

1 回答 1

0

您可以从 database.js 文件中导出 db 对象,并在 index.js 文件以及您需要访问数据库的所有其他文件中需要它。或者,一种更简单但更丑陋的方法是通过global.db = db. 然后,您可以db在 Node.JS 应用程序中的任何地方使用。

于 2020-10-08T14:33:02.347 回答