Articles of expression

ExpressJS:app.local和res.local有什么不同?

我试图学习Express,并在我的应用程序中,我有中间件,从Request对象传递会话对象到我的Response对象,以便我可以在我的视图中访问它: app.use((req, res, next) -> res.locals.session = req.session next() ) 但是app.locals可用于视图,对吗? 那么,如果我做app.locals.session = req.session它是一样的吗? 是否有一个约定的事物types的app.locals和res.locals用于? 我也困惑res.render()和res.redirect()之间的区别是什么? 什么时候应该使用? 谢谢阅读。 任何与快递有关的帮助表示赞赏!

使用Jade,NodeJS,Express的dynamichtml页面

我有一个大的json对象,包含从redis keystore检索的示例电子表格中的单元格数据。 我想在jade模板中以html表格格式显示它。 但现在,我可以把它显示为一个JSONstring。 我也不清楚如何使用玉/快速生成dynamic网页。 示例JSONstring正试图通过: {"1A":"Cell Data 1", "1B": "Cell Data 2",…} 这是来自Excel电子表格的数据。 请帮我澄清这个疑问。

用express-validatorvalidation密码

我使用express-validator进行express 3.x – 当用户更改密码或注册新帐户时,他们必须input两次密码。 如果两个密码(两个string)不匹配,我将如何编写一个自定义validation器来将错误推送到express-validator中的错误堆栈? 像这样的东西: req.assert('password1', 'Passwords do not match').isIdentical(password1, password2); var mappedErrors = req.validationErrors(true);

Node.js(Express)表格在提交时清除

我正在使用Node.js(使用Express)开发一个非常基本的registry单,我正在试图find提供基本表单validation的最简单的方法。 我已经去了“快速确认器”,这似乎做得很好。 但是,我的目标是简单地显示所需的任何validation消息,并保留用户input的值。 看来请求信息没有回到res.render,我想这是有道理的。 然而,我已经到处看到了我能想到的,我找不到任何参考,讨论如何在显示错误消息后填充表单字段。 以下是描述我的方法的小片段: post: function(req, res){ var userName = req.body.username; var password = req.body.password; //Validate input req.assert("username", 'Invalid email address.').isEmail(); req.assert("password", 'Password cannot be empty.').notEmpty(); req.assert("passwordConfirm", 'Passwords entered do not match!').equals(password); //Make sure we have no validation errors var pageErrors = req.validationErrors(); if(!pageErrors) { userModel.CreateUser(userName, password, function(err){ if(err) { //there was a […]

express.static()caching文件在内存中吗?

在ExpressJS for NodeJS中,我们可以执行以下操作: app.use(express.static(__dirname + '/public')); 为所有的静态CSS,JS和图像文件提供服务。 我的问题是这些: 1)当我们这样做时,Express会自动caching服务器内存中的文件,还是每次提供其中一个资源时都从硬盘读取? 2)当我们这样做的时候,Express是否默认使用ETag,将资源保存在客户端的硬盘上,还是只保存在客户端的内存上?

从string中提取图像src

我试图匹配所有的图像元素作为string, 这是我的正则expression式: html.match(/<img[^>]+src="http([^">]+)/g); 这工作,但我想提取所有图像的src 。 所以当我在这个String上执行正则expression式时: <img src="http://img.nodejscore.com/javascript/img_example.jpg /> 它返回: "http://img.nodejscore.com/javascript/img_example.jpg"

node.js表示app.get和app.post

我正在与Facebook应用程序canvas,需要后。 我正在使用快速处理app.post('/')和app.get('/')..是否有可能将这些在一个单一的function? 谢谢

Node / Express:使用会话存储状态时的并发问题

所以我search了一下,发现了几个类似的问题,但都没有真正解决这个问题,所以我觉得这个问题本身就是值得的。 我有一个修改会话保持状态的一堆路由的快速应用程序。 事情是,如果有多个并行请求,由于请求之间的竞争条件,会话会不时被覆盖。 所以通常 … app.use(express.static('/public')); app.use(session(…)); app.route('methodA').get(function(req, res, next) { doSomethingSlow().then(function() { req.session.a = 'foo'; res.send(…); } }); app.route('methodB').get(function(req, res, next) { doSomethingElseSlow().then(function() { req.session.b = 'bar'; res.send(…); } }); 基本上这个问题很简单,例如在这个答案中描述。 Express将会话存储在res.end()中,但在处理methodA请求时,methodB请求可能会在此期间修改会话,以便methodA存储会话时将覆盖methodB所做的任何更改。 因此,即使节点是单线程的,并且所有请求都由同一个线程提供服务,只要有任何方法正在执行某种asynchronous操作,我们就可以最终解决并发问题,从而让其他请求同时处理。 但是,我正在努力决定如何着手解决这个问题。 所有我find的答案只列出了最小化发生这种情况的可能性的方法,例如通过确保静态内容不通过在会话MW之前注册服务静态MW来存储会话。 但这只是在一定程度上有所帮助; 如果实际上API方法应该被并行调用,那么需要一些实际并发的会话更新方法(IMO,当涉及到并发问题时,每个“解决scheme”都力求最小化发生问题的可能性而不是寻址实际问题肯定会出错)。 基本上这些是我目前正在探索的select: 完全通过修改我的客户端来防止在同一个会话中的并行请求,以确保它连续调用所有的API方法。 这可能是可能的,但会对我的架构产生相当大的影响,并可能影响性能。 它也避免了这个问题,而不是解决这个问题,如果我的客户端出了问题,或者另一个客户端使用了API,我可能还会随机遇到这个问题,所以它不会很健壮。 确保每个会话写入之前都有一个会话重新加载,并使整个重新加载 – 修改 – 写入操作成为primefaces。 我不知道如何做到这一点。 即使在修改和存储会话之前修改res.end()来重新加载会话,因为读取和写入会话是asynchronousI / O,似乎可能会发生这种情况: 请求A重新加载会话 请求A修改session.A ='foo' 请求B重新加载会话(并不会看到session.A) […]

Internet Explorer中的快速会话

我像这样configuration快速会话插件: var express = require('express'), session = require('express-session'), uuid = require('node-uuid'); var expiration_day = new Date('9/15/2015'), today = new Date(), session_life = Math.abs(expiration_day.getTime() – today.getTime()); var config = { name: 'mycookie', // session ID cookie name key: 'mycookie', // session ID cookie name secret: '$FGDFH$W#WEgfgdf', hash: { salt: '9883hjHFIDSU&U#H' }, store: new MongoStore({mongooseConnection: db}), unset: […]

在Express / Node中使用sendFile时发生随机'ECONNABORTED'错误

我已经用Express中间件设置了一个节点服务器。 当加载一个触发大约10个其他负载(js,css等)的HTML文件时,我会在某些文件上随机获取ECONNABORTED错误。 确切的错误是: { [Error: Request aborted] code: 'ECONNABORTED' } 由这个简化代码生成(在我尝试debugging问题之后): res.sendFile(res.locals.physicalUrl,function (err) { if (err) console.log(err); … } 很多post都提到由于没有指定完整path名而导致的这个错误。 这不是这里的情况。 我确实指定了完整的path,而且错误是随机生成的。 有时候,页面及其后面的所有链接都可以完美加载,有时甚至没有。 我试图刷新caching,并没有find任何模式来连接它与此。 这个特定的错误似乎是套接字连接中止的一个通用术语,并在其他应用程序(如FTP)的上下文中讨论。 意识到节点工作线程可以增加,我试图这样做使用: process.env.UV_THREADPOOL_SIZE = 20; 然而,我的理解是,即使没有这个,最多文件传输可能不得不等待一个工作线程是免费的,不会被中止。 我不是在这里谈论大文件,所有文件都小于1 MB。 我有一个直觉,这与节点直接无关。 请指出任何其他的可能性(节点或其他)来处理这个错误。 另外还有其他的间接解决scheme吗 重试几次可能是一个,但这将是笨拙的。 编辑:不,我不能重试。 标题已经发送错误! 一边注意:许多使用sendFile的示例跳过使用callback,从而给人的印象是一个同步调用。 不是这样。 请始终使用callback,检查是否成功,然后才能转到“下一个”中间件,或者如果发送失败,采取适当的步骤。 如果不这样做,可能会使debuggingasynchronous环境中的后果变得困难。