Articles of 表示

会话未定义 – 使用Connect-Redis / ExpressJS / Node

今天早上,我醒来发现Nodejitsu旋转出现以下错误: Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process. '好吧!' 我想到了自己 – 然后我去find更合适的东西。 我决定使用Redis,并立即开始在我的应用程序中实现connect-redis和node-redis 。 但是,在重复尝试修复之后,以下错误仍然存​​在。 错误如下: TypeError: Cannot set property 'loggedIn' of undefined at /Users/Ryan/Aggregus/server.js:300:25 at Promise.<anonymous> (/Users/Ryan/Aggregus/object_models/user.js:60:5) at Promise.<anonymous> (/Users/Ryan/Aggregus/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8) at Promise.EventEmitter.emit (events.js:95:17) at Promise.emit (/Users/Ryan/Aggregus/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38) at Promise.fulfill […]

node.js + socket.io + redis体系结构 – 水平serverscaling套接字连接?

我第一次使用node.js并希望得到一个build议: 我在我的服务器上安装了以下程序: node.js v0.11.3-pre expressionv3.3.4 socket.io v0.9.14 connect-redis v1.4.5 Redis服务器v = 2.6.14 redis-cli 2.6.14 首先,我创build了一个快速应用程序: express testApplication 在创build的“package.json”中,我定义了所有必要的依赖关系。 从一开始,我就在一个名为“cluster.js”的文件中定义了一个用于垂直缩放(多进程)的集群: var cluster = require('cluster'); if( cluster.isMaster ) { var noOfWorkers = process.env.NODE_WORKERS || require('os').cpus().length; console.log("Workers found: " + noOfWorkers); for (var i = 0; i < noOfWorkers; i += 1) { cluster.fork(); } } else { […]

Express.js – 在同一页面上发送警报作为响应

我有3种forms的视图,当提交时,在mysql数据库中添加新的条目。 我想在每次添加条目时都发送一条提示“您已经成功添加了X”,而无需从页面导航。 // Form to be Submitted <form method="post" action="route/action/"> <input type="text" name="name"> </form> // Route exports.action = function (req, res) { client.query(); // What kind of response to send? } 我怎样才能发送警报? 我应该发什么样的回应? 谢谢!

res.redirect()在node.js中不起作用

我正在尝试发送/草稿请求,并在我的数据库中创build一个新的“草稿”/更新现有的草稿。 之后,我想立即redirect到/ draft?id = RELEVANT_ID_HERE页面。 这是我目前的POST请求function: app.post('/draft', function(req,res){ var id = req.query.id; var postTitle = req.body.head; var article = req.body.article; if(id){ db.postCatalog.findOneAndUpdate({_id: id}, {title:postTitle, inShort:article.substring(0,100), content:article}, function(err, data){ if (err) { return handleError(err); } else { console.log(data); res.status(200).redirect('/draft?id='+id); } }); } else{ id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == […]

节点快递服务器不响应ajax

我是node.js的新手,遇到了Cors问题。 我发送客户端ajax获取请求从一个快递服务器到另一个,但至less我不能从app.all('*', function(req, res, next){console.log("request: "+req)}) GET请求看起来像这样: $.ajax({ type: 'GET', url: 'http://localhost:8082/request' }); 我也在ajax中设置标题: 'beforeSend : function(xhr) { xhr.setRequestHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS'); xhr.setRequestHeader('Access-Control-Allow-Origin', '*'); xhr.setRequestHeader('Access-Control-Max-Age', '1000'); xhr.setRequestHeader('Authorization', '*')}, …或在node.js中设置cors模块: var cors = require('cors'); var app = express(); app.use(cors()); app.options('*',cors(),function(){ console.log("preflight") }); 在firefox和chrome中,我都没有收到任何回应(在chrome中我得到了net::ERR_CONNECTION_REFUSED )当我的电脑在本地运行节点服务器时,一切正常。 curl命令也正常工作。 有没有机会,这是托pipe/端口的问题,还是我还错过了什么?

Sails JS Waterlinejoin了多个模型

您好我试图join多个表与填充方法,我GOOGLE了,找不到有效的方式做到这一点,我不想查询数据库多次build立的结果,是否有可能解决这个问题与帆版本“ 〜0.10.0-rc7“我正在build造一个有超过一百张桌子的大型项目。 var co = { adapter: 'someMysqlServer', migrate:'safe', autoCreatedAt: false, autoUpdatedAt: false, autoPK:false, attributes:{ id:{ type:"int", primaryKey: true, autoIncrement: true }, code:"string", priority :"int", co_group_c_id :"int", timezone_c_id :"int", lang_c_id :"int", currency_c_id :"int", name_used :"string", name_official :"string", co_tax_no :"int", co_vat_no :"int", co_vat_reg :"int", co_reg_record :"string", co_representative :"string", co_addresses:{ collection: "co_address", via: "co_user_id" }, } }; […]

每个HTTP /会话请求的GLOBAL数据?

题: 有没有办法在每个会话/ http请求中创build一个variables存储? 该variables必须是全局可访问的,并且不同的每个HTTP请求/连接/会话,并且不需要从function传递到function。 例如(只是为了说明): setVariableThatCanBeAccessedByThisHTTPRequestOnly( 'a string data' ); 任何东西都应该可以工作,但我宁愿远离将它从function传递到function。 //I'm trying to get rid of passing req parameter to all custom functions. //I'd like to store it in a variable somehow, that it can be accessed globally, but only within that session/request. exports.functionName = function( req, res ) { customFunctionThatRequiresReq( req ); }; […]

Node.js,Express,Mongoose – inputvalidation – 在路由或模型中?

我有一个restapi资源,接受一个JSON文章。 例: { "location": { "coordinates": [ -122.41941550000001, 37.7749295 ] } 然后通过Express从请求中收集坐标: module.exports.create = function(req, res, next) { var coordinates = req.body.location.coordinates; …. 然后这些提交给一个mongoose模型。 我正在写这个testing,在这个地方。坐标缺less,例如 { "foo": { "bar": [ -122.41941550000001, 37.7749295 ] } 然后在模型的validation部分失败: locationSchema.path('location.coordinates').validate(function(coordinates){ ^ TypeError: Cannot call method 'validate' of undefined 所以我的问题是我将如何validationinput是正确的? 在进入模型之前,是否应该在路线上完成这项工作?还是应该在模型中完成? 任何例子,如何也将不胜感激。 作为参考,Mongoose模型看起来像这样: var locationSchema = new Schema({ userid: { […]

socket.io手动添加用户到空间(node.js)

我有一个私人工作的聊天应用程序。我的实现是: 1 – 用户进入另一个用户configuration文件页面并写入消息。 在此之后,我为这个对话创造了一个空间。 socket.join(data.user); 2 – 接收者用户将采取这个消息(只有这个用户),但我不知道我怎么可以join这个接收机用户到这个房间。 所以这是我的问题基本上。 我需要添加“手动”这个接收机用户到我的房间。 这样当我把消息广播到这个房间的时候,消息就会发出这两个用户(一个是匿名的,另一个是注册用户)。 它会提供我的一些代码。 server .on('connection', function(socket) { server.to(socket.id).emit('yourSocketId',{ socketid : socket.id,connectedDate : Date.now }); socket.on('AnonymousMessage', function(data) { if(data.isanon == true) { socket.join(data.user); server.to(data.user).emit('AnonymousBroadcast', { message: data.message, user: data.user, isanon : data.isanon, date : data.date, tabno : data.tabno }); } else { socket.join(****); //– I need […]

Nodejs&Express:如何通过Render将多个variables(Json Datatype)从服务器发送到客户端

我正在使用itunessearch模块,并在nodejs中表示框架 。 search模块返回不同的variables,如软件细节,音乐细节。 我需要音乐艺术家的细节和歌曲的细节。 我可以用下面的代码简单地返回歌曲细节。 在这里,我通过渲染返回了一个variables。 但是我需要返回两个variables。 在客户端: $scope.search_music_data = function(data) { var data="HamdunSoft";//Search my favourite artist name or band name $http({'method' : 'post', url: '/search', data: {'search_item' : data}}). success(function(data){ $scope.artist_name = data; }). error(function(data){ }) $scope.check = true; } Bellowed代码在服务器端: 在route.js中 app.post('/search', search.search_music); 在search_music函数中,我做了音乐search: song="calculated data Json Data" var response.send(song); 这是工作。 但是我也需要发送另一个计算的数据 song="calculated […]