Tag: 表示

如何将中间件的更改传递给socket.io?

我正在使用node.js与socket.io推送实时通知给用户。 但是,目前我只是发送一个查询结果在我的socket.io代码完成,并发送回客户端,但我需要让套接字知道发生的变化,要么更新与更改或重新查询数据库检查新号码并将其发送给客户。 例如,如果用户获得好友请求,那么通知计数将会改变,我希望socket.io将新的通知计数编号推送给用户。 这里是我的app.js文件中的socket.io代码: io.on('connection', function(socket) { var sessionID = socket.handshake.sessionID, session = new connect.middleware.session.Session({ sessionStore: sessionStore }, socket.handshake.session) console.log('socket: new ' + sessionID) socket.broadcast.emit('arpNewConn', session.passport.user) var intervalID = setInterval(function() { socket.handshake.session.reload(function() { socket.handshake.session.touch().save() }) socket.emit('pulse', { heartbeat: new Date().toString(), timestamp: new Date().getTime() }) }, 300 * 1000) socket.on('disconnect', function() { console.log('socket: dump ' + […]

app.get和app.post在node.js中获取值

我在Node.js的Express中使用app.get和app.post函数。 我有这样的例子: app.post('/status', function(req, res) { if (~packages.STATUSES.indexOf(req.body['status'])) { res.status(req.body.status, req.body.message); res.jsonp(new packages.Success('status updated')); } else { res.jsonp(new packages.Error('invalid status')); } }); 这将工作,如果我张贴数据的服务器,我注意到它得到的价值 req.body['status']; 如果我使用GET并在这里传递值呢? 我应该做些什么来获得“地位”? app.get('/status', function(req, res) { // how can I get status… var status = ?? if (~packages.STATUSES.indexOf(status) { //got value res.status(req.body.status, req.body.message); res.jsonp(new packages.Success('status updated')); } else { res.jsonp(new packages.Error('invalid […]

让ExpressJS为映射path返回404

所以我有我的ExpressJS应用程序的以下开发configuration: //core libraries var express = require('express'); var http = require('http'); var path = require('path'); var connect = require('connect'); var app = express(); //this route will serve as the data API (whether it is the API itself or a proxy to one) var api = require('./routes/api'); //express configuration app.set('port', process.env.PORT || 3000); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); […]

asynchronousJavaScript的devise模式

比方说,我有一个快速应用程序,我想显示从数据库中获得的东西。 我有一个包含此文件(使用node-mysql进行数据库交互) exports.getData = function() { connection.query('SELECT * FROM table', function (error, rows, fields) { return rows[0]; }); } 我希望能够调用这些数据并将数据传递给模板语言。 但是,它不这样工作,因为(我认为)callback没有返回,直到函数退出后,导致getData返回undefined。 我必须错过一些关于callback的重要“aha”时刻。 如果我想与数据库进行交互,我是否必须执行routes / index.js(我正在服务的页面的控制器)中的所有逻辑,并最终将页面呈现在一系列callback的底部?

Node.JS – 简单的Socket.IO示例不起作用。 获取debugging服务的静态内容/socket.io.js(Mac OSX / Localhost)

我刚刚开始与node.js前几天,我知道试图使用socket.io模块。 但是这不是我所期望的。 我试图重现的例子是这样的: http : //robdodson.me/blog/2012/06/04/deploying-your-first-node-dot-js-and-socket-dot-io-app-to -heroku / 我知道他们正在使用的Express版本已经过时,所以我更新了我的代码以适应他们正在使用的模块的新版本。 我的问题是我的客户端没有得到我的服务器发出的,这里是我的服务器端代码: var express = require('express'), http = require('http'), app = express(), port = 8080, // Use 8079 for dev mode server = http.createServer(app).listen(process.env.PORT || port, function(){ console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env); }), io = require('socket.io').listen(server), routes = require('./routes'); // Configuration […]

如何在ExpressJS中使用Q的承诺?

我需要生成PDF文档。 关于pdf进入generateDoc函数的所有魔法,它们以Buffer数据作为参数返回promise。 但Express不会将数据发送到客户端,只有标题。 我究竟做错了什么? app.get('/', function(req, res) { generateDoc().then(function(data) { res.set({ 'Content-Type': 'application/pdf', 'Content-Length': data.length }); res.end(data); }); });

Express js路由中的filter

我是新来expressionjs。 有没有一种方法来configuration应用程序,以支持URL的不同点的filter。 让我在我的问题上更加清楚 可以说我有 app.get('/path1/*' , function1) app.get('/path1/path2/*' , function2) app.get('/path1/path2/path3/*' , function3) 当我说http://mydomain.com/path1/path2/path3/path4 GET , 我需要按顺序执行function1,function2,function 3。 有什么办法可以做到这一点? 提前致谢。

在MongoDB中传递参数$

我的脚本有点问题 我不能在'$ where'的函数中传递一个参数(例子中的MYPARAMETER)。 你有帮助我的想法吗? 谢谢。 var MYPARAMETER = "dqsd qsdqs &é&é"; MyCol.findOne({ $where: function(MYPARAMETER) { var tab1="ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ!#$€%&'`(),;:/@.*[]\|"; var tab2= "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn "; rep2=tab1.split(''); rep=tab2.split(''); parray=new Array(); var i=-1; while(rep2[++i]) { parray[rep2[i]]=rep[i] } var chaine = this.name.replace(/\s{1,}/g,"-"); chaine = chaine.replace(/./g, function($0){return (parray[$0])?parray[$0]:$0 }); chaine = chaine.replace(/\s/g,""); return (chaine == MYPARAMETER); } },

在Express中检索多个variables

我试过在几个网站上查找,但我仍然不明白如何使用Express检索几个GETvariables。 我想能够ping一个Node.JS Express服务器的URL使用: file_get_contents('http://127.0.0.1:5012/variable1/variable2/variable3/variable4'); 要么 file_get_contents('http://127.0.0.1:5012/?1=variable1&2=variable2&3=variable3&4=variable4'); 然后我需要能够在Node.JS Express脚本中以variables1,variables2,variables3和variables4的forms使用它们,而不是全部在一个string中。 一个存储它们的对象将会很好。 感谢:P

使用express.js和locomotive.js在中间件中添加api标记

我正在构build一个restapi服务器,我将使用一个angularjs前端。 我正试图实现一些运行在每个请求上的中间件。 对于每一个请求,我想检查一个API标记,如果存在继续检查是否有效,如果不存在,则返回未经授权的响应,而不完成请求。 这些请求在我尝试添加中间件之前就工作了,但是一旦我尝试添加中间件或在主要路由超时之前赶上路由, http://localhost:3000/developer/test?api=fhgjtyd6fjrj4off6r4rhgjdldksrghiue750f { response: { id: "test", api: "fhgjtyd6fjrj4off6r4rhgjdldksrghiue750f" } } 这两个路线都可以工作,但我更喜欢资源版本。 ( http://locomotivejs.org/guide/routing/ ) this.match('/developer', { controller: 'developer', action: 'show' }); this.resources('developer'); 这是我一直在试图遵循的一个例子,因为它看起来大部分是我需要做的。 ( http://webapplog.com/intro-to-express-js-parameters-error-handling-and-other-middleware/ ),但目前我试图实现这样的东西,它超时的路线。 它将console.log()方法中的东西,但它的行为就像它正在等待它永远不会得到的东西。 如果我尝试使用下一个()我得到一个未定义的错误,我不想将该应用程序注入到身份validation器或任何其他对象。 function requiredParamHandler(param){ //do something with a param, eg, check that it's present in a query string return function (req,res, next) { //use param, […]