ExpressJS Middleware方法,使变量在其他(模块)文件中可用

时间:2018-11-25 19:53:48

标签: node.js express

我正在制作一个将REST API功能与MongoDB CRUD持久性相结合的NodeJS应用。我对NodeJS很陌生。

现在,我设法连接到数据库,并发现我的其余代码属于回调内部-即仅在数据库启动并可用后才处理REST请求。

在这种情况下,我遇到的挑战是了解如何将“客户端”(从mongodb.connect)“附加”到“请求”。我需要以某种方式使其在其他文件中可用,因为我希望将路由分开作为最佳实践。

相同的问题适用于main.server文件中需要在模块中访问的所有变量。 这是相关代码:

//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?
    }
}

预先感谢您的帮助! 如果我的帖子有任何不符合正常标准的情况,我深表歉意,我是这里的新手!所有评论都赞赏,编码和其他方式!

0 个答案:

没有答案
相关问题