我想知道在我的情况下,重用数据库连接的最佳方式是什么,对于NodeJs和Express来说,这个连接是Couchbase连接。 对于Express部分,我创建了一个类似于以下的中间件:
Original Answer翻译成:"最初的回答"
var couchbase = require('couchbase')
var config = require('../config/config')
module.exports = (req,res,next)=>{
var cluster = new couchbase.Cluster(config.cluster)
cluster.authenticate(config.userid, config.password)
let bucket = cluster.openBucket(config.bucket);
bucket.manager().createPrimaryIndex(function() {});
req.bucket = bucket;
req.N1qlQuery = couchbase.N1qlQuery;
next();
}
在 Express 应用程序中,由于我告诉它这样做,所以它能正常工作。"最初的回答"。
const dbSessionMiddleware = require('../middleware/couch')
app.use(dbSessionMiddleware)
我使用 req.bucket 访问它。我的问题是,我的应用程序中有控制器,它们可能会调用一个帮助函数,然后再调用另一个函数来获取一些数据。我想避免将请求对象向下传递5个级别以上才能使用中间件。是否有更好的方法可以将连接/桶暴露给普通函数?