Tag: express

在生产机器上部署和运行节点服务器的最佳方法?

我正在使用Webrtc,nodejs,Expressjs作为创buildaudio,video和聊天应用程序的框架。 我已经使用了Forever,以便脚本可以持续运行。 正如我的应用程序处理audio,video和聊天。 用户存在扮演着重要的angular色。 我们需要始终启动和运行系统,避免系统崩溃并重新启动。 如果发生这种情况,我们将放弃有关在线用户的所有信息。 需要build议什么是避免这种情况的最佳方法。 此外,在将新function移至生产服务器的同时,应该考虑哪些步骤,以便应用程序不会停止,从此我们不会丢失用户信息。 如果服务器出现故障或者我们不得不把它closures的话。 有什么不同的技术可以使用,以便我们不会丢失系统中在线用户的状态信息,并将其恢复(如有必要)。

nodejs在1次调用S3 / SQS后停止响应

我正在使用aws-sdk模块在nodejs / expressjs中执行一个简单的过程: 上传文件(使用浏览器表单发布) 将其发送到AWS S3 请在AWS SQS中input消息以进一步处理。 用SQS返回对象响应客户端。 下面的代码完美的工作,但只有一次。 在一个文件的第一个文章后,节点应用程序不再响应其他post或动作(它甚至停止了我用SetInterval(method,10000)运行的任何进程)当我尝试发布第二个文件时,它只是挂起。我重新启动服务器,它只是一个职位工作正常我在WebStorm 5 IDE中运行nodejs-v0.10.9。客户端发送文件后路由到的代码如下 – queueXml: var fs = require('fs'); var step = require('step'); var AWS = require('aws-sdk'); AWS.config.loadFromPath('./lib/aws/config.json'); var bucketName = 'xxxxxx'; var sqsEndPoint = 'http://xxxx'; exports.queueXml = function(req,res){ var key = getGuid(); step( function readPostedFile(){ fs.readFile(req.files.postedfile.path, this); }, function sendToS3(err, data){ if(err) throw err; […]

在mongo,node,passport和heroku上validation用户。 几天后停止工作

我正在用mongo,express,angular和node创build我的第一个完整的web应用程序。 我来自一个前端的背景,我正在努力与authentication实施一点点。 我的(不完整的)应用程序工作了好几天,但是今天它突然崩溃了,然后我神奇地修复了它。 我很确定我没有改变代码中的任何东西。 该错误导致所有经过身份validation的用户看到“访客用户”帐户。 这将允许他们login,但用户会以guest用户身份从mongo回来。 你看到这个代码中缺less的东西吗? var express = require('express'), routes = require('./routes'), api = require('./routes/api'), http = require('http'), path = require('path'), mongoose = require('mongoose'), passport = require('passport'), LocalStrategy = require('passport-local').Strategy; var app = module.exports = express(); var uristring = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/HelloMongoose'; mongoose.connect(uristring, function (err, res) { if (err) { console.log […]

当在node.js中保存大文档时,MongoDB-mongoose使用高cpu

我正在开发一个EC2托pipe的像素跟踪应用程序,每次请求video广告时都会调用这个应用程序,因此它会跟踪何时启动,完成以及是否进行了点击操作。 我正在使用node.js,因为我想尽可能快地响应mongoDB / Mongoose,因为它就像服务器日志结构一样。 几乎每毫秒都会收到请求。 但是将文件存储到集合中时,占用大量的CPU几乎100%,并且在最后node.js启动错误: GET /pixel/impression/ad1 200 1ms FATAL ERROR: CALL_AND_RETRY_2 Allocation failed – process out of memory 我认为这是mongoose的操作,当我移除部件的时候,它就占用了大部分的CPU,它不会挂起。 在app.js上我有: var hostSchema = new mongoose.Schema({ ip: String, date: { type: Date, default: Date.now } }); var orderSchema = new mongoose.Schema({ name: String, metricCount: { impression: { type: Number, default: 0 }, clicks: { […]

如何使用passportjs重置密码

我正在使用passportjs来validation用户,并使用bcrypt来存储密码。 以下代码重置我的盐字段,但不会更改散列字段。 UserSchema.update({ _id: mongoose.Types.ObjectId(req.user._id.toString()), }, { $set: { salt: req.body.newPassword } }, function(err, user) {…..} 任何机构可以帮助我如何重置散列字段?

在Mocha中使用Supertest来testingNode.js Express API和MongoDB

我一直在search这个网站和networking一段时间,我找不到解决这个问题。 我试图testing我的API的REST函数,但PUTtesting似乎从来没有工作。 每次在mocha运行testing,我得到错误“未捕获的断言错误:expected []等于{objectData}”其中objectData是我试图发布的对象(名为couponTwo)的json表示forms。 我有一个感觉问题在于beforeEach函数,因为它在每次testing之前清除数据库,这需要做很多其他testing才能正常运行。 这里是testing代码: var config = require('../config/config'); var mongoose = require('mongoose'); var should = require('should'); var request = require('supertest'); var Coupon = require('../models/coupon'); var url = require('../config/config').test.url; process.env.NODE_ENV = 'test'; beforeEach(function (done) { function clearCollections() { for (var collection in mongoose.connection.collections) { mongoose.connection.collections[collection].remove(function() {}); } return done(); } if (mongoose.connection.readyState === 0) […]

Node.js + Mongoose消耗插入的所有内存

我需要填写大约8000万条logging //Example { "_id" : "4gtvCPATZ", "isActivated" : false } 其中_id是随机生成的。 我使用Node.js Express和Mongoose来做到这一点: app.get('/api/codes', function(req, res) { for (var i = 0; i < 100000; i++) { var code = new Code({ _id: randomStr(9), isActivated: 0 }); code.save(); code = null; } res.render('index'); }); function randomStr(m) { var m = m || 9; s = […]

socket.io授权引发“握手错误”

在使用session.socket.io模块挣扎之后,我决定通过为我的socket.io设置授权来进行套接字会话连接。 这是我的服务器: /** * Module dependencies. */ var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); var io = require('socket.io'); var redis = require('redis'); var crypto = require('crypto'); var redisClient = redis.createClient(); var app = express(); // Session Tracking var cookieParser = express.cookieParser('secret'); var RadisStore = require('connect-redis')(express); var […]

等待从Node + Expressredirect的挂起types

我使用JQuery从客户端发送POST请求,并使用node.jsredirect到root。 但在我的开发者控制台,我得到的状态:302(暂时),并键入:待定 客户代码: $.ajax({ type: "POST", dataType: "json", data: JSON.stringify({ username_var:username_var, password_var:password_var }), url: "/login", success: function(data){ alert(data) console.log(data); alert(data.name); } }); 服务器代码: if (req.method == 'POST'){ console.log("[200] " + req.method + " to " + req.url); req.on('data', function(chunk) { console.log("Received body data:"); console.log(chunk.toString()); var userLoginObject = JSON.parse(chunk); console.log(userLoginObject.username_var); console.log(userLoginObject.password_var); var status = { name: […]

节点mssql更新查询,获取rowcount

我正在使用NodeJS包MSSQL( https://npmjs.org/package/mssql#cfg-node-tds )连接到MS SQL数据库并执行UPDATE查询。 我明白,如果UPDATE查询最终不会影响任何行,它仍然会返回成功事件。 如果零行受到影响,我想要以不同的方式处理成功事件,因为这不是查询的预期结果。 在做了一些研究之后,我发现在执行SQL查询时,可以使用@@ ROWCOUNT来获取受影响的行数,但是我还没有弄清楚如何在MSSQL Node包中使用它。 有没有人使用这个节点包,并处理更新查询我想要的方式? 谢谢!