快速路由共享variables
我最近开始学习node.js + Express,发现它很有趣。
我已经阅读了许多有关在路由中共享variables的post,其中许多是使用module.exports和exports。
我决定做一个函数来设置一个局部variables
路线/ test.js
var db; exports.setup = function(_db){ db = _db; }; exports.doit = function(req, res){ db.get("testToken", function(err, result) { console.log("err: " + err); console.log("result: " + result); res.send("respond with a resource"); }); };
app.js
var redis = require("redis"); var db = redis.createClient(); var test = require("./routes/test.js"); test.setup(db); // configuration... app.get('/', test.doit);
可以做这样的事吗?
我想确保我不会多次连接数据库连接,共享variables是我能想到的唯一方法。
你能提出一些build议吗?
谢谢!!
这应该工作得很好。 虽然,你可能会考虑将“设置”从“路线”中分离出来。
由于db
始终是相同的值,因此可以使用Express 3的prototype
对象将其附加到所有路由中的req
和/或res
对象:
routes/test.js
exports.doit = function(req, res){ req.db.get("testToken", function(err, result) { console.log("err: " + err); console.log("result: " + result); res.send("respond with a resource"); }); };
app.js
var redis = require("redis"); var db = redis.createClient(); var test = require("./routes/test.js"); // "setup" express.request.db = express.response.db = db; // configuration app.get('/', test.doit);
但是,您也可以将“设置”定义为自定义中间件:
// before: app.use(app.router); app.use(function (req, res, next) { req.db = res.db = db; next(); });
基本上,它看起来不错,但它可能是module.exports
而不是只是exports
?
此外,我会封装模块代码到自行执行的匿名函数,以防止名称冲突和声明module.exports
一次。
像这样的东西:
(function() { var _db; setup = function (db){ _db = db; }; doit = function (req, res){ _db.get("testToken", function(err, result) { console.log("err: " + err); console.log("result: " + result); res.send("respond with a resource"); }); }; module.exports = { setup: setup, doit: doit } }).call(this);
- 使用Node.js和Express进行简单的API调用
- 承诺 – 未处理的拒绝挂起请求
- 结合套接字,并使用快递中间件时expression?
- 如何在login后将用户导向search结果?
- 抓取POST仅在Express API服务器React FrontEnd中返回_id对象
- 从Firebase Function / Express / Node.js获取原始POST数据
- 如何使用Express,Handlebars和Conslidate在Node.js中设置path
- 当Content-Type为text / csv时,Sails.js正文内容
- Node / Express – Serve-static不工作/如何使用服务静态文件的路由