我有一个主index.js
文件:
var express = require('express')
require("dotenv").config();
const db = require('./services/db_service').db_connection()
const customers = require('./routes/customers');
var app = express();
app.use('/customers', customers)(db) <--- I suppose something like this
app.listen(process.env.PORT, function () {
console.log(`Example app listening on port ${process.env.PORT}!`)
})
和routes/customers.js
:
var express = require('express');
const router = express.Router();
router.get('/' , (req, res) => {
db.query('SELECT * FROM customers', (err, rows, fields) => { <-- db.query
if (!err)
res.send(rows);
else
console.log(err);
})
} );
是否有方法将db
从index
传递到routes/customers
?
可以编写中间件函数设置db连接:
// index.js
app.use(function (req, res, next) {
req.db = db
next()
})
// routes/customers.js
router.get('/' , (req, res) => {
req.db.query('SELECT * FROM customers', (err, rows, fields) => { <-- db.query
if (!err)
res.send(rows);
else
console.log(err);
})
} );
您还可以要求Customer.js中的db来避免污染请求。
// routes/customers.js
var express = require('express');
const router = express.Router();
// notice here, path begin with ".."
const db = require('../services/db_service').db_connection()
router.get('/' , (req, res) => {
db.query('SELECT * FROM customers', (err, rows, fields) => { <-- db.query
if (!err)
res.send(rows);
else
console.log(err);
})
} );