Articles of expression

可以使用表单validationinputtypes的“文件”是否需要?

我使用express-form https://github.com/dandean/express-form 它是否有能力validationtypesfile的input? 我特别想require有人上传文件。 编辑林纳斯:) 我试过: field("pdf").required("pdf", "You must select a file to upload.") 问题是这是寻找req.body.pdf而不是req.files.pdf ,所以它总是认为validation失败。 编辑/工作代码:根据Linus的回答,我做了什么来实现它。 我不仅需要configurationdataSources参数,还需要检查字段的size属性,因为只是在字段上做了required就不够好,因为即使文件input为空,它仍然存在(元数据等)。 所以相反,我做了一个自定义validation函数,确保pdf.size大于0.在我的代码中,我也检查是否有title 。 我留在这里,以防万一有人想知道如何把多个validation串起来。 var form = require('express-form') .configure({dataSources: ['body', 'files', 'query', 'params']}); form( field("pdf.size").custom(function(value) { if (value <= "0") { throw new Error("You must select a file to upload."); } }) , field("title").trim().required("title", "Please enter a title […]

为什么node.js Express框架在设置会话variables时不使用callback?

我已经注意到,为了在会话中存储一个值,您只需调用req.session.key = value,而无需指定callback。 我使用connect-mysql模块将mysql设置为会话存储适配器。 所以我想知道每次我保存一个值的会话,它正在更新的分贝,不应该有一个callback与此相关? 然而,在我看来,人们正在愉快地同步使用它。 有人可以解释为什么这种情况? 谢谢。

expression压力testing

我有一个相当困难的时间来确定我的networking服务器(切诺基)和expressjs网站之间的性能瓶颈。 由于POSTstream量的增长,我们开始不时地看到性能问题。 所以我devise了一个testing,看网站1,2,3和4个实例的突破点是什么,并且由于糟糕的性能(以每秒5个很好,每秒10个很差)而震惊。 根据我的性能logging,一个完整的请求开始到结束在1000-4000毫秒之间开始,在短时间开始之后以线性趋势增加,因此在大约5分钟之后请求需要40,000-60,000毫秒。 在expressjs网站logging中,开始结束请求的性能logging需要100-400毫秒(大部分时间是90-390毫秒,这个时间是等待Java API响应的)。 我已经调查了连接池/最大套接字,但不知道如何使用快速configuration,并且随着不断增长的stream量,我们开始感受到来自每一个减弱性能的热量。 现在我有两个理论:1.压力testing代码有些问题, 2.从压力testing应用程序或expressjs发送请求时,有一个小的连接池。 如果上述任何一个是真的,我不知道如何解决这些问题。 – 压力testing应用程序 – /* * POST stress testing */ var rest = require( "restler"); var u = require( "../underscore")._; var uuid = require( "node-guid" ); var fs = require( "fs" ); var quoteContent = fs.readFileSync( __dirname + "/data/quoteList.json" ); var quotes = JSON.parse( quoteContent ).quotes; […]

如何处理express.js路由?

我有类似的路线 app.get('/home',requireLogin,routes.home) exports.home = function(req, res){ res.render('index', { title: 'home' }); }; 现在如果我想我的url看起来像这样 /home/menu/someting 我必须创build像这样的路线 app.get('/home/menu/someting',requireLogin,routes.newRoutes) 或者我可以只修改routes.home来处理其余的url,就像是有第二个/东西做某事。 我知道我可以有家/:参数,但我需要的url看起来完全像家/菜单/东西,后我会有:参数。 只是回答我这是可能的处理/ home和/ home /菜单在相同的路线,没有参数

Express和Node.js模块i18n和现在缺乏助手

从https://github.com/mashpie/i18n-node的自述文件中,他们将展示如何使用快速模板进行设置,但是它使用助手: // register helpers for use in templates app.helpers({ __i: i18n.__, __n: i18n.__n }); 那么在Express 3.0中没有帮助者,那么如何在模板中注册i18n模块呢? 谢谢你的帮助!

路线和意见

我用express来使用nodejs。 在对根path的获取请求中,我想要路由到索引文件。 如果有path“/游戏”的获取请求,我想要路由到不同的来源。 app.get('/', function(req, res){ res.render( "index", {locals : { myLocal : "myValue"}} ); }); app.get('/game', function(req, res){ res.render("/game/index", {locals : { myLocal : "myValue"}} ); }); 第一个“get”很好,但第二个发送这个exception: 500 Error: failed to locate view "/game/index" at Function.exports.compile (D:\Webstorm\myExpress\node_modules\express\lib\view.js:61:15) at ServerResponse.res._render (D:\Webstorm\myExpress\node_modules\express\lib\view.js:417:18) at ServerResponse.res.render (D:\Webstorm\myExpress\node_modules\express\lib\view.js:318:17) at exports.game (D:\Webstorm\myExpress\routes\index.js:12:9) at callbacks (D:\Webstorm\myExpress\node_modules\express\lib\router\index.js:272:11) at param (D:\Webstorm\myExpress\node_modules\express\lib\router\index.js:246:11) at […]

为expressjs应用正则expression式

我需要处理这样的请求: /key/6435.254.53538 我写了在RegexPal中工作的正则expression式 (([0-9]+\.?)+) 我在Express.js中创build处理程序 /key/:key(([0-9]+\.?)+) 但它只返回密钥的最后一部分 req.params.key == '53538' 我如何检索完整的密钥?

在各种目录中加载Jade模板?

我无法从这张票的结果工作。 我只是试图创build更多的模块化代码块,并希望把路线和视图放在一起。 我需要一个健康检查这一个。 我无法获取使用相对path拾取Jade文件的路由(我不喜欢相对path): Error: Failed to lookup view "../test/app" 。 请帮忙 :) Github: https : //github.com/franklovecchio/stackoverflow-13770206 文件夹结构: . │ ├── package.json ├── public │ └── lib │ └── login │ ├── 0.0.1 │ │ └── routes.coffee │ └── test │ └── app.jade ├── server.coffee └── views └── layout.jade server.coffee express = require('express') http = […]

Node.JS ExpressJSasynchronous与同步

早上好,stackoverflow 我有这条路线: app.get('/myaccount', messages.getMessages, function(req, res, next) { messages = ''; res.render('myaccount', { messages: messages }); }); messages.getMessages通过superagent向另一个服务器调用并获取一些消息以返回给用户(在该消息variables中) 这里的问题是,有时… messages.getMessages可能需要2-3秒来检索所有的消息,所以当我刷新页面有时我看到的消息…有时我不是非常随机的。 我对节点比较陌生,但是我认为messages.getMessages是asynchronous的,这样页面就可以被完全呈现,所有的variables都会在返回消息之前传递给jadejs。 我怎么基本上要求路线等待,直到我得到messages.getMessages数据之前继续呈现路线? 谢谢!

req.session内容试图访问另一条路线时会消失

我不能使用expressjs会话来了解我的代码有什么问题。 我在路由/login上设置了req.session.is_logged = true ,然后按F5调用路由/session , req.session.is_logged值为false。 这是一些代码 var express = require("express"); var app = express(); app.configure(function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({secret: 'test', store: express.session.MemoryStore({ reapInterval: 60000 * 10 })})); }); app.get('/session', function(req, res){ if (req.session.is_logged){ console.log('|–>Session recognized'); res.status(200); res.send({ response: "OK" }); }else{ console.log('|–>Any session recognized'); res.status(403); res.send({ response: "KO" }) }; }); app.get('/login', function(req, res){ […]