ExpressJS Middleware Метод, позволяющий сделать переменную доступной в других (модульных) файлах - PullRequest
0 голосов
/ 25 ноября 2018

Я работаю над созданием приложения NodeJS, которое сочетает в себе функциональность REST API с сохранением MongoDB CRUD.Я довольно новичок в NodeJS.

Сейчас мне удалось подключиться к базе данных и выяснить, что остальная часть моего кода принадлежит внутри обратного вызова - т.е. обрабатывать REST-запрос только после того, как БД запущена иavailable.

В этом случае я сталкиваюсь с проблемой понимания того, как «присоединить» «клиента» (из mongodb.connect) к «запросу».Мне нужно как-то сделать его доступным в других файлах, потому что я хочу хранить свои маршруты отдельно в качестве лучшей практики.

Тот же вопрос относится к любым переменным в основном файле server.js, которые мне нужно иметь для возможностидоступ в мои модули.Вот соответствующий код:

//server.js
const express = require('express')
const mongodb = require('mongodb')
const bodyParser = require('body-parser')
const routes = require('./routes')

const url = 'mongodb://localhost:27017/testDB'
let app = express();
app.use(logger('dev'))
app.use(bodyParser.json())

mongodb.connect(url, {useNewUrlParser:true},(error, dbClient) => {
    if (error) {
        console.log(`Error: ${error}`)
        process.exit(1)
    }

    //connected
    console.log(`Connected to mongoDB`)
    //what do I do here to make sure my routes can access dbClient?
    app.get('/accounts', routes.getAccounts(req, res) )

    app.listen(3000)
})


//./routes/index.js
const bodyParser = require('body-parser')
const errorhandler = require('errorhandler')
const mongodb = require('mongodb')
const logger = require('morgan')

module.exports = {
    getAccounts: (req, res) => {
        console.log("in getAccounts")
        //how can I use dbClient in here?
    }
}

Заранее благодарим за помощь!Приношу свои извинения, если что-либо о моем посте не соответствует нормальным стандартам, я здесь новенький!Вся критика оценена, кодирование и прочее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...