Articles of expression

在ZIP文件stream式传输过程中,Nodejs阻止并不能处理下一个请求

我试图创build一个简单的应用程序,将创buildZIP包含几个文件并将它们stream到客户端。 几乎工作。 我遇到的问题是nodejs在进行stream传输时阻塞。 所有pendig请求将在完成当前stream式处理后处理。 但有趣的是, 这些待处理的请求将被同时处理! 所以它可以做到这一点! 我不明白,为什么nodejs(expressjs?)在stream式传输一个文件的时候无法开始处理下一个请求,我做了什么错误…: 我正在使用node-archiver作为stream源。 这是我的部分代码: var express = require('express'); var archiver = require('archiver'); var router = express.Router(); router.get('/job/:id', function(req, res) { var job = req.jobs[req.params.id]; var archive = archiver('zip'); archive.pipe(res); for (var n in job.files) { var f = job.files[n]; archive.file(job.path + f, {name: f}); } res.setHeader("content-type", "application/zip"); res.setHeader("Content-Disposition", 'attachment; […]

Node.js Express REST API – 使用GET请求访问JSON url params

我有一个REST端点是/ geo / search,并且需要一些长/纬度坐标作为请求的一部分发送(GEO多边形)。 有没有什么办法可以在GET请求中使用JSON? 我在想这个URL编码可能是一个解决scheme: var data = encodeURIComponent({"coordinates":[[-122.610168,37.598167],[-122.288818,37.598167],[-122.288818,37.845833],[-122.610168,37.845833],[-122.610168,37.598167]]}); 我将如何访问路线中的这些参数?

ExpressJS会话与Cookie

我试图使用cookie来build立ExpressJS 4.2和cookierparsing器的用户会话,但是我发现的所有文档都是针对Expressjs 3.x或更旧版本的。 有人能指出我正确的方向吗? 文档或代码片断将不胜感激。 提前致谢! ====== 我想使用PassportJS来validation本地用户与MongoDB,一切正常,除了这条路线(确保总是重新定向到/,即使当在MongoDB中find用户/通行证 // reusable middleware function ensureAuthenticated(req,res,next) { if(req.isAuthenticated()) {return next();} res.redirect('/'); // if failed… } router.get('/panel', ensureAuthenticated,function(req, res){ res.render('panel', {obj: testArr}); }); 那是因为ensureAuthenticated找不到活动的cookie。 我的app.jsconfiguration是这样的: var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); […]

无法理解Ember + Node身份validation

自2个月前以来,我一直在使用ember,node,express。 我开发了一个小应用程序,现在是时候添加用户身份validation,但我不知道如何做到这一点。 我有几个问题: 1.-在只有index.html的 SPA应用程序中,我包含所有.js的 ember文件。 所以,用户可以看到所有的应用程序逻辑没有身份validation? 只有当用户被授权时,我怎么才能添加这些库? 2.-什么是在烬中validation的正确方法 ? 我还没有看到官方文件的解决scheme。 3.-前端如何与后端进行通信,这里的逻辑是什么? 这是在每一个路线? 另外我正在寻找一个例子或教程。 谢谢!

有人能为我解释下面的正则expression式吗?

我从MEAN.JS框架中的config.js文件中得到了以下正则expression式 var urlRegex = new RegExp('^(?:[az]+:)?\/\/', 'i'); 但我无法理解正则expression式。 有人可以解释它或给我一些匹配的例子吗?

YouTube的正则expression式:经testing挑选video和播放列表ID,但Node.js不会

我有以下正则expression式,已经过三个不同的网站testing,以匹配所有的YouTube链接,也捕获videoID和一个可选的播放列表ID。 尽pipe如此,我的Node应用程序除了videoID之外没有任何其他内容: /(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((?:\w|-|_){11})(?:(?:\?|\&)index=((?:\d){1,3}))?(?:(?:\?|\&)list=((?:\w|-|_){24}))?(?:\S+)?/g Debuggex演示 我的实际代码: var youtube = /(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((?:\w|-|_){11})(?:(?:\?|\&)index=((?:\d){1,3}))?(?:(?:\?|\&)list=((?:\w|-|_){24}))?(?:\S+)?/g; ansCopy = ansCopy.replace(youtube, "^~$1~^~$3~^"); 使用“ http://www.youtube.com/watch?v=VWKdcalZTaA&list=UUlucBMqhrYW4PWuIp8Um_cg&index=46 ”作为testingstring,这应该产生string: "^~VWKdcalZTaA~^~UUlucBMqhrYW4PWuIp8Um_cg~^" 但它会产生: "^~VWKdcalZTaA~^~~^"

MEAN Stack – 仅在某些REST方法上使用带有express-restify-mongoose的jwt

我对这些东西都很陌生,所以请耐心等待。 我尝试使用MEAN堆栈来创buildREST API – 为了使事情变得简单,我试图使用这个: https://github.com/florianholzapfel/express-restify-mongoose 运行时,它对我来说是完美的工作: restify.serve(应用程序,酒店); – >应用程序当然是expression,酒店是我的mongoose.model指向我的酒店架构。 它也正在处理我的“令牌逻辑”,我可以使用类似下面的方法来保护所有restify的URL: 除非({path:['/ auth','/']})); 我的问题是 – 我如何保护一些REST方法与我的令牌逻辑(POST,PUT,DELETE)在例如'/ api / hotels' – >我想像GET这样的方法是公开的,但不是POST,PUT和删除。 可能吗? 非常感谢您的帮助!

Nodejs表示可互换的会话存储

有快速切换会议商店的方法吗? 目前取决于默认configuration,我的快递应用程序使用redis或mongo来存储会话。 所以我的问题是:有没有办法使用redis将会话切换到mongo? 如果redis出现故障。 我尝试再次调用app.use(express_session({….})) ,但它的工作。 我想我必须有一些钩子,可以让我删除当前的会话存储并创build|添加新的会话存储。 不知道在哪里。

在nodejs中放置数据库检查的正确位置

我正在用NodeJS和ExpressJS构build一个应用程序。 我的文件夹结构如下所示: /app /controllers /models 我试图分离模型中的所有逻辑和数据库调用,以及控制器中的“usertomodel”动作。 在控制器中,我有以下代码:(在控制器中) app.post('/api/nodes/upload/image', processMultipartForm, function(req, res) { if (!req.files.file) { return res.status(400).json({ message: 'INVALID_FILE' }); } … if (ALLOWED_FORMATS.indexOf(file.mimetype) == -1) { return res.status(400).json({ message: 'INVALID_FILE_FORMAT' }); } ….. NodesModel.createFile({ … }, {…}, function(){…}); 做简单的检查。 但是,在完成所有validation之后,我需要完成3个asynchronous数据库调用(例如,检查文件是否存在,权限等),并使用模型中的async npm包中的瀑布模块,它看起来像这:(在模型中) NodesSchema.statics.createFile = function(opts, user, cb) { var _this = this; async.waterfall([ function(callback) { […]

正则expression式在Express.js路由器

我试图在Express中find一些关于正则expression式的文档,但Express API中的信息非常稀less。 我正在试图做一个正则expression式匹配objectID。 有关正则expression式的示例在Express文档中给出。 router.get(/^\/commits\/(\w+)(?:\.\.(\w+))?$/, function(req, res){ … }); 我已经尝试了以下在我的路由器,它似乎工作正常。 client.get('/staff/:id([0-9a-fA-F]{24})', function(req, res) { … }); 但有一些分歧,我不明白… 我的例子被包围在' ,API中的例子不是。 这是什么意思? 我的expression是一个string,而不是一个正则expression式? 我不使用: /^或?$/ 。 不太了解正则expression式我想这是一些锚点。 我需要这个吗? 我不逃避\我的url/staff/:id的第一部分。 这是我应该做的吗? 此外,有没有人知道一个广泛的资源阅读正则expression式在Express路由器…或参数选项或任何它是我在上面做…