提问者:小点点

节点快速路由将变量传递到所需模块


我有一个主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);
    })
} );

是否有方法将dbindex传递到routes/customers


共2个答案

匿名用户

可以编写中间件函数设置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);
    })
} );

相关问题