Tag: 快速

处理mongodb时直接stream式传输错误来表示响应

我只是开始使用mongodbstreamfunction来直接stream数据到快速响应 。 为此,我使用在这个问题上find的一段代码: cursor.stream().pipe(JSONStream.stringify()).pipe(res); 当游标返回MongoError时,我想用500状态标记响应。 不幸的是,在这个代码中,错误以200状态返回到JSON中。 我怎样才能使用简单的解决scheme来处理? 我是否必须在光标的错误事件中处理? 如果是这样,如果发生错误,我怎么能告诉不要直接stream式expression回应? 编辑 我已经尝试了一个解决scheme,像这样处理stream中的错误事件: var stream = cursor.stream(); stream.on('error', function(err){ res.status(500).send(err.message); }); stream.pipe(JSONStream.stringify()).pipe(res); 不幸的是,当发生错误时,我得到了一个Error: write after end从快速Error: write after end因为我已经在错误事件中发送了响应。 当光标stream失败后,如何将标记为错误状态的响应?

关于express.cookieSession()的几个问题

在我的node.js服务器(运行express和socket.io )上,当一个人连接时,我将它们添加到一个数组中,并将它们在数组中的位置保存到它们的会话中,这样每个连接都可以访问它们自己的信息,如下所示: session.person_id = people.length; session.save(); people.push(new Person()); //people[session.person_id] => Person 我在会话中唯一保存的是person_id 。 我一直在使用express.session()来处理这个问题,直到我开始将信息发送给一次连接的所有人。 当我循环连接并获得他们的会话时,有时(我不知道如何计算错误) session存在,但不是session.person_id 。 无论如何,我希望通过改变我存储会议的方式,它可以帮助我找出我的问题。 所以我有几个问题,我无法在任何地方find答案。 从express.cookieSession()的cookie存储在哪里? 服务器端还是客户端? express.cookieSession()是否允许在负载均衡器后面运行多个服务器? 使用express.cookieSession()时,用户是否可以操作会话数据?

以asynchronous方式执行Express res.render

我有一个nodejs应用程序,其中res.render方法是以约400毫秒的阻塞方式。 我如何处理这个以非阻塞的方式执行? 我的apache基准testing需要12秒来执行大约30个并发请求。 我如何以更好的方式实现这一点? var start = +new Date; //fetch data from redis console.log('time taken to fetch data from redis ' + (+new Date – start)); //30 ms res.render('some_jade_view', params); console.log('time taken to render data ' + (+new Date – start)); //530 ms 我尝试了process.nextTick但是没有多大帮助,ab结果是一样的。

connect.session的秘密和connect.cookieParser的区别?

我想使用连接模块connect.session和connect.cookieParser在我的Express应用程序中使用安全的cookie。 根据文档,都接受一个secret参数。 该密钥用于防止用户篡改cookie。 我应该将相同的密钥设置到两个模块还是两个不同的模块? 或者我应该只通过一个关键到其中之一?

快速获取rawBody

您好,我试图从post中检索的东西,并需要来自请求的rawBody属性。 我怎样才能找回? 我尝试使用express.bodyParser()和我的后处理程序,我正在寻找req.rawBody,它是未定义的。 我甚至尝试过connect.bodyParser(),但是我仍然没有运气。 我正在为rawBody定义。 我正在阅读的stackoverflow网站上说,他们已经删除了rawBodyfunction,但提到这是一个快速修复,将其添加到我们自己的中间件文件。 我是一个新手,所以我不知道如何做到这一点。 以下是我的代码片段。 /** * Module dependencies. */ var express = require('express') , connect = require('connect') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); […]

Express / torrent-stream:从stream中写入文件,使用url将套接字发送给客户端,但客户端无法find文件

我正在开发一个个人项目,基本上需要一个磁铁链接,开始下载文件,然后在浏览器中呈现video的洪stream。 我使用一个名为torrent-stream的npm模块来完成大部分的工作。 一旦我创build了可读stream并开始写文件,我想用videoURL向客户端发送套接字消息,以便客户端可以呈现html5video元素并开始stream式传输video。 我遇到的问题是,一旦客户端呈现video元素,并试图find源mp4我得到一个404video文件中找不到错误。 任何意见,这将是高度赞赏队友。 🙂 控制器function: uploadVideo: function (req, res) { var torrentStream = require('torrent-stream'); var mkdirp = require('mkdirp'); var rootPath = process.cwd(); var magnetLink = req.param('magnet_link'); var fs = require('fs'); var engine = torrentStream(magnetLink); engine.on('ready', function() { engine.files.forEach(function(file) { var fileName = file.name; var filePath = file.path; console.log(fileName + ' – ' + […]

Node.js Expres.js Heroku Toolbelt>工头开始 – 错误:写入EINVAL

这是我在使用Heroku Toolbelt for Node.js运行工头时遇到的package.json错误 "dependencies": { "express": "~4.4.0", "jade": "~1.3.1" }

从nodejs执行一个batch file

是否有可能从nodejs应用程序运行batch file? Googlesearch一段时间后,我们可以使用child_process来执行命令。 尝试相同的模块,但没有成功。 有人可以指导我吗?

TypeError:任务不是asynchronousjs平行的函数

我试图上传一个图像,并使用下面的代码更新数据库集合中的图像的url。 Controller.prototype.handle = function (req, res, next) { var id = req.params.id, controller = req.params.controller, optionalController; optionalController = _.clone(controller); // handle optional controller if (controller === 'newboat') { controller = 'boat'; } else if (controller === 'newcrew') { controller = 'crew'; } var files = req.files.files || {}, monthYear = new Date(), monthYear = [monthYear.getFullYear(), […]

对象#<MongoClient>没有方法“打开”

我一直在尝试使用Node.js,Express.js和MongoDB创build一个简单的站点。 我是新来的这些技术,一直有问题设置数据库这是我的index.js文件中的代码片段: var http = require('http'), express = require('express'), path = require('path'), MongoClient = require('mongodb').MongoClient, Server = require('mongodb').Server, CollectionDriver = require('./collectionDriver').CollectionDriver; var app = express(); app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); var mongoHost = 'localHost'; var mongoPort = 27017; var collectionDriver; var mongoClient = new MongoClient(new Server(mongoHost, mongoPort)); mongoClient.open(function(err, mongoClient) { […]