我正在制作一个将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?
}
}
预先感谢您的帮助! 如果我的帖子有任何不符合正常标准的情况,我深表歉意,我是这里的新手!所有评论都赞赏,编码和其他方式!