node express routing передает переменную в требуемый модуль

#javascript #node.js #express #express-router

#javascript #node.js #экспресс #экспресс-маршрутизатор

Вопрос:

У меня есть основной 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 к routes/customers from index ?

Ответ №1:

Вы можете написать функцию промежуточного программного обеспечения для установки подключения к БД:

 // 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);
    })
} );