Express-resource将附加数据从app.js传递给路由
我想从app.js传递额外的数据到express资源路由,我还没有想出来。 你会怎么做? 请注意,我正在使用快递资源
// app.js var myAddOnData = 'abc'; app.resource('users', './routes/user'); // user.js exports.index = function (req, res) { console.log(myAddOnData); };
谢谢
这是我能想到的三种方法。 没有我对你的具体问题的了解,听起来中间件可能是这样做的。
与全球app
variables
在app.js
使用app.set
创build一个值,然后使用app.get
中的user.js
进行检索。
使用模块
将信息存储在隔离的模块中,然后根据require()
。 如果这是跨多个实例运行的,那么显然要将值存储到磁盘而不是内存中。
// keystore.js // ----------- module.exports.set = function(id, val) { /* ... */ }; module.exports.get = function(id) { /* ... */ }; // app.js // ----------- var ks = require('./keystore'); ks.set = function("userInfo", "abc"); module.exports.get = function(id) { /* ... */ }; // user.js // ----------- var ks = require('./keystore'); ks.get = function("userInfo", "abc");
(也许看看锅 ?)
使用中间件
使用自定义中间件将数据附加到请求对象,然后可以在路由处理程序中稍后访问它。
//app.js //------ var express = require('express') , cookieSessions = require('./cookie-sessions'); var app = express(); app.use(express.cookieParser('manny is cool')); app.use(cookieSessions('sid')); // ... //cookie-sessions.js //------------------ module.exports = function(name) { return function(req, res, next) { req.session = req.signedCookies[name] || {}; res.on('header', function(){ res.signedCookie(name, req.session, { signed: true }); }); next(); } }