【发布时间】:2019-02-24 21:14:25
【问题描述】:
我想知道在我的情况下重用数据库连接的最佳方法是在 NodeJs 和 express 中重用它的 couchbase 连接。 对于 Express 部分,我创建了一个像这样的中间件
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 级左右才能使用中间件。有没有更好的方法可以将连接/存储桶公开给正常功能?
【问题讨论】: