Tag: 快速

如何用Node.js的fs模块实现文件下载并expression

由于该文件应该dynamic生成,也许我应该使用fs模块的writeStream。 但我找不到任何示例代码与我可怜的谷歌search。 抱歉。 更具体地说,当有人请求时,我想用MongoDB中的数据提供CSV文件或PDF文件。 任何人,请给我一些提示。 谢谢。

在Express中更改Cookie到期

因为在调用expressServer.use(express.session({params}))时我没有定义maxAge,所以cookie的到期时间被设置为“Session”。 我想在login时添加“记住我”function。如果select“记住我”,则过期将延长到一个月。 我怎么去做这个? 我试图简单地扩大maxAge,但似乎没有做任何事情… expressServer.get '/blah', (request, response) => request.session.cookie.maxAge = 2592000 response.end 'hello there' 谢谢您的帮助! ** 编辑 ** 我试图做一个简单的服务器来testing更新用户的cookie。 我正在使用Express 3.0.4 当我访问127.0.0.1:9000/blah时,浏览器cookie的“过期”字段仍然是“会话”… express = require 'express' expressServer = express() expressServer.use express.cookieParser() expressServer.use express.session secret: 'supersecret' cookie: path: '/' httpOnly: true expressServer.get '/', (request, response) => response.end 'hello' expressServer.get '/blah', (request, response) => request.session.cookie.maxAge = […]

如何testingConnect / Express中间件?

假设我有Connect和/或Express的中间件。 unit testing这个中间件的最好方法是什么? 当然,我可以在unit testing中设置一个http服务器,并将中间件加载到这个中。 但假设我想testing启动行为,我需要几个http服务器,很快变得复杂和不清楚(考虑在每个单独的testing中使用一个新的端口)。 有没有更好的方法,还是在真正的服务器内进行testing,最好的方法是?

包含HTML块使用node.js

这是我想要的,但可能不能有: 使用node.js和express或者ejs,我想在我的客户端目录中编写一个普通的HTML文件时,server-side-include包含一个HTML模板块。 如果我可以将variables传入HTML文档的include,那也很酷。 Sooo的东西是这样的: <!doctype html> <html> <head> <%include head, ({title: "Main Page"}) %> </head> <body> <% include header, ({pageName: "Home", color: "red"}) %> … <<% include footer%>> </body> </html> 在节点世界里有没有这样的作品? 或者任何接近并可能适合这种function的东西? 我不会完全按照这里指出的方式使用它,但这是我正在寻找的function。 我已经看了玉,车把,烬和ejs,和ejs似乎是最接近的。 也许其中之一已经这样做了,但我只是困惑实施。 任何build议将是伟大的!

Connect-mongo会话不会被自动删除

我有一个使用NodeJS,Express,MongoDB和connect-mongo的应用程序。 我的问题是,会话过期似乎不会自动从MongoDB中删除,所以数据库大小增长,直到磁盘已满。 connect-mongo的开发者写了一条评论 : connect-mongo会要求MongoDB删除在当前date之前过期的所有会话。 但是,这似乎并没有发生在我的情况。 我的configuration是: var express = require('express'); var MongoStore = require('connect-mongo'); var sessionStore = new MongoStore({db: 'myappsession'}); var app = express.createServer(); app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: "myappsecret", store:sessionStore })); app.use(app.router); app.use(express.static(__dirname + '/public')); }); 而我目前正在运行以下版本: 节点: 0.7.0-pre connect-mongo: 0.1.7 表示: 2.5.2 连接: 1.8.5

Jade模板引擎 – 每个迭代偏移量

有没有办法在使用Jade模板引擎时抵消“每个”迭代? 例如,在传入名为list的对象时: ul each item in list li #{item} 会输出 <ul> <li> Item 1 </li> <li> item 2 </li> <li> item 3….. … </ul> 但是我希望第一个项目的显示方式与其余项目不同,例如: <ul> <li> Item 1: First Item in list! </li> <li> item 2 </li> <li> item 3….. … </ul> 那么有没有人知道一种方法来抵消在Jade中的'each'语句,以便我可以分别渲染第一个项目,然后渲染每个从第二个索引开始的项目?

Node.js / Express和并行队列

我们正在构build一个基于Node.js服务器和Express的基础架构。 在服务器中,发生的情况如下: 服务器接受来自客户端的传入HTTP请求。 服务器生成两个文件(这个操作可以是“相对较长”,也就是说0.1秒左右) 服务器将生成的文件(每个〜20-200 KB)上传到外部CDN 服务器响应客户端,这包括CDN上文件的URI 目前,服务器为每个请求按顺序执行此操作,而且这种方式运行良好(Node / Express可以自动处理并发请求)。 然而,随着我们计划增长,并发请求的数量可能会增长,我们相信对我们来说,实现一个处理请求的队列会更好。 否则,我们可能冒险有太多的任务在同一时间运行和太多的打开连接到CDN。 快速响应客户并不是一件相关的事情。 我在想的是在Node服务器中有一个单独的部分,它包含一些 “工作人员”(2-3,但我们将做testing以确定同时操作的正确数量)。 所以,新stream程看起来像这样: 在接受来自客户端的请求之后,服务器将一个操作添加到队列中。 有2-3(待testing)工作人员将队列排除在外并执行所有操作(生成文件并将其上载到CDN)。 当工作人员处理了这个操作(不pipe是否在队列中停留时间较长),它通知Node服务器(callback),并且服务器响应客户端(它一直在等待)。 你怎么看待这个方法? 你相信这是正确的吗? 最重要的是,这可以在Node / Express中实现吗? 感谢您的时间

常见的节点logging,快速应用 – 最佳实践?

我正在使用几十个模块和使用bunyan进行日志logging(JSON输出,多个可configurationstream)的node.js应用程序。 我一直在寻找如何在所有模块中实现一个实例的好例子,但是还没有看到什么似乎是我可以从中学习的一个非常干净的例子。 下面说明了一种可行的方法,但对我来说似乎相当不雅(丑陋)。 一般来说,我是新来的节点&commonjs的JavaScript,所以寻找如何改善它的build议。 模块:./lib/logger // load config file (would like this to be passed in to the constructor) nconf.file({ file: fileConfig}); var logSetting = nconf.get('log'); // instantiate the logger var Bunyan = require('bunyan'); var log = new Bunyan({ name: logSetting.name, streams : [ { stream : process.stdout, level : logSetting.stdoutLevel}, { path : logSetting.logfile, […]

快递会话和Cookie会话有什么不同?

我是Express新手。 由于Express 4.x已经删除了捆绑的中间件。 任何我想使用的中间件应该是必需的。 当我通过github上的express-session和cookie-session阅读README时,我感觉很难理解它们之间的区别。 所以我试图写简单的代码来弄清楚。 我为每个中间件运行两次。 var express = require('express') , cookieParser = require('cookie-parser') , session = require('cookie-session') , express_sess = require('express-session') , app = express(); app.use(cookieParser()) app.use(session({ keys: ['abc'], name: 'user' })); //app.use(express_sess({ secret: 'abc', key: 'user'})); app.get('/', function (req, res, next) { res.end(JSON.stringify(req.cookies)); console.log(req.session) console.log(req.cookies) }); app.listen(3000); 对于cookie-session ,我总是在我的terminal中{}。 对于express-session ,我得到这样的事情。 req.session: […]

http.createserver与node.js中的net.createserver

我无法理解node.js中的net.createserver和http.createserver之间的区别。 我已阅读位于这两个urlhttps://nodejs.org/api/net.html#/net_net,https://nodejs.org/api/http.html#/http_class_http_server上的两种方法的文档。 据我所知,http.createserver创build一个http服务器,但文档说net.createserver创build一个tcp服务器。 我知道tcp是http的传输协议,并且http服务器设置为读取http请求标头。 我也很了解node.js中甚至发射器的概念。 不过,我不明白这个tcp服务器的概念,为什么会在node.js。 上下文是我正在编写“node.js in action”一书中的聊天应用程序示例。 谢谢你的帮助