Tag: 中间件

从快递中间件访问数据

我在node.js中构build一个应用程序。 我写了一个中间件函数钩子,当有人在我的应用程序上发出GET请求时就执行它,就像他们进入主页,configuration文件页面等一样。钩子从另一个API发出一个HTTP请求来收集数据。 我的问题是如何在客户端访问这些数据? 这是我的中间件钩子: var request = require('request'); module.exports = { authentication: function (req, res, next) { if (req.method === 'GET') { console.log('This is a GET request'); request("http://localhost:3000/api/employee", function(err, res, body) { console.log(res.body); }); } next(); } }; 它用在我所有的路线中: app.use(middleware.authentication) 示例路线: router.get('/', function(req, res, next) { res.render('../views/home'); }); 注意我使用了console.log(res.body) ,但我想打印在CLIENT端的内容。 有没有人有任何想法如何做到这一点?

表示进行asynchronous调用的中间件

我们有一个NodeJS Express应用程序,我们已经实现了一个自定义分析后端。 现在,我们正在决定如何实现跟踪机制,针对function手机等JS禁用的浏览器。 我们正在考虑的一种devise方法是创build一个中间件,拦截每个请求,从请求/上下文中提取参数并将它们发送到后端。 这是非常可扩展的,对于像我们这样的定制分析解决scheme来说非常合理。 另一种方法是创build一个像谷歌分析那样的跟踪像素,然后从中提取数据。 但是,这似乎是一个定制跟踪解决scheme的可扩展性更小的解决scheme,因为参数和数据结构可以随时改变或放大,不像GA。 我的问题是这样的 – 是否有任何其他的方面,使中间件,使asynchronous请求? 在创build服务器时,我们需要了解什么,因为对服务器的每个请求都要通过这个中间件? 我们是一个相当大的应用程序,每分钟几十万的stream量。

Express.js中间件extra(第四个)参数

在Express.js中间件的可选参数上 ,除了是一个error handling中间件之外,可能还有第四个参数 ,所以我有一个用例。 这可能是通过不同的方式来实现的,但无论如何。 我想要检查一些api路由权限,我希望写入的中间件应该为请求用户查找他/她有多less信誉点(整数)的数据库。 我定义了一个对象来保存作为关键值对需要的权限和信誉点。 之后,中间件应该查找这个特权对象来查看用户是否具有大于或等于相应操作的信誉点。 我想传递这个相应的动作名称作为每个路由的不同string在特权对象中的一个键。 这可以通过发送stringactionName通过请求到路由来实现,但是我发现它不太安全(请求中的数据可能被篡改为具有恶意用户可以访问的操作名称并且为其他所需的数据字段但不允许采取行动)。 所有的情况都和SE一样。 顺便说一下,显然我也需要基于路由的(不是基于路由器的)中间件安装,我不确定Express.js是否支持,但这是另一回事。 也许可以描述和问这个用例, 我可以用我的参数来参数化一个中间件函数,而不仅仅是传入的req和res对象吗? 我如何用Express.js中间件实现这个用例? 或者我应该使用另一种机制? /// Privilege Check middleware // used per route with corresponding actionName // signature function (request, response, next, actionNameOneOfKeysInPrevilegesObject::String) var privilegeCheck = function (req, res, next, actionName) { db.one( ` SELECT reputation FROM users WHERE id = $(id) `, {id: […]

req.form不是一个实例化的多方表单对象

我正在使用具有多部分中间件的快速节点框架。 设置multipart defer: true选项让我可以访问req.form中的req.form ,但它似乎不是一个有效的多方Form对象实例。 这只是一个普通的旧JS对象。 问题在于我无法使用表单对象上的多方文档中列出的function。 听事件,parsing表单等是行不通的。 我使用这个build议,而不是折旧bodyParser()与快递: app.use(express.urlencoded()); app.use(express.json()); app.use(express.multipart({ limit: '900mb', defer: true })); 在我的路线中: app.post('/api/videos/upload', isLoggedIn, function(req, res) { var form = req.form; form.on('progress', function(bytesReceived, bytesExpected) { console.log(bytesReceived + ' / ' + bytesExpected); }); 我在日志中没有得到任何进展。 我看到的所有例子都假设这个表单对象是真正的交易,而不仅仅是一个数据对象。 他们有什么不同? 我错过了什么? 我看到了一些解决scheme,build议直接编写我自己的使用多方的中间件。 我考虑过这个,但是我在不需要这个控制级别的不同路由中使用多部分中间件来处理其他表单。 是否可以使用多部分,并写我自己的中间件只是为了上传? 如果我要去兔子洞,我会解释我的最终目标。 我想在上传开始之前检查预期的字节,所以我可以立即将它踢回到前端。 在找出文件太大之前,没有理由让用户等待900MB上传。 如果任何人有任何的洞察力如何实现这一点,请分享。

从请求中获取用户浏览器数据

在PHP中有一个全局$_SERVER['HTTP_USER_AGENT']来获取用户浏览器数据。 SailsJS目前有没有类似的function?

nodejs +在不同的端口上expression奇怪的东西

有人能告诉我发生了什么事吗? 我有一个应用: var express = require('express') , http = require('http') , app = express() , port = 3000 , mw = require('./lib/middlewareView') app.use(mw()); app.get('/', function (req, res, next) { res.send("hello"); }); app.listen(port, function() { console.log("Listening on " + port); }); 和/lib/middlewareView.js: module.exports = function middlewareView(){ return function middlewareView(req, res, next) { console.log("middleware run"); next(); }; […]

如何使用i18n-2模块更改语言,具体取决于url params

我要疯了! 由于昨天我试图设置i18n-2模块,但不能改变语言,任何人都可以帮助我吗? 这个node.js模块有一个很差的文档,希望没有关于如何使用/:params来改变语言的例子 所以我想这样: //configuration: I18n.expressBind(app, { locales: ['en', 'pt'], cookieName: 'locale' }); 这就是我想要根据/:语言环境更改语言 app.use(function (req, res, next) { req.i18n.setLocale(req.params.locale); next(); }); app.get('/:locale', function(req, res) { console.log(req.i18n.__("My Site Title")); }); 而且我在locale文件夹中有两个文件,'pt.json' – 葡萄牙语和'en.json' – 英文。 PT: { "My Site Title": "Titulo", } EN: { "My Site Title": "My Title", } 但是不工作在所有…即使我尝试访问site.com/pt,en json将被加载。 我在这里做错了什么?

如何检测我的express(4.0)node.js应用程序是否使用特定的中间件?

为了进行unit testing,我希望能够解决一些中间件是否在使用中。 例如 app.js var express = require('express'); var morgan = require('morgan'); module.exports = function(options) { var app = express(); if (options.logRequests) { app.use(morgan('dev')); } return app; } app.test.js (通过摩卡运行) describe('app', function(){ it('should log requests when initialized with the `log requests` option', function() { var app = require('./app)({ logRequests: true }); // Something to establish […]

如何依靠其他中间件快递?

在快速中间件中依赖其他中间件的最佳实践是什么? 假设我的中间件在执行之前依靠bodyParser。 有没有比在自述文件中明确告诉我的用户先包含并运行我的依赖关系更好的方法?

会话Node.js + Passport.js + Redis,通过user.id存储会话

当用户login一个会话是为他创build的,但是如果他要去另一台计算机login,将为他的账户创build第二个会话。 我想这样做,以便用户不能有一个有效的会议。 无论如何用user.steamId存储在redis中的会话,以便他的第一个会话无效? 任何帮助将非常感谢! app.js var express = require('express'), http = require('http'); var app = express(); var cookie = require('cookie'); var server = http.createServer(app); var io = require('socket.io').listen(server); var redis = require('redis'); var client = redis.createClient(); var session = require('express-session'); var redisStore = require('connect-redis')(session); io.set('transports', ['websocket']); var path = require('path'); var logger = require('morgan'); var […]