Tag: 连接

POST数组数据到Express被parsing为JSON

我的应用程序是使用Express的Node.js。 使用jQuery POST从我的客户端发送testing数据: { title: 'hello', notes: [ {title: 'note 1'}, {title: 'note 2'} ] } 这是我的服务器代码的结果: { title: 'hello', notes: { '0': { title: 'note 1' }, '1': { title: 'note 2' } } } 我想获得数组笔记作为一个数组插入到我的数据库。 我错过了什么? 由于我不能自己添加一个答案8小时(跆拳道?),但它并没有真正回答为什么Express.bodyParser不正确parsingJSON 好的我可以通过使用: JSON.stringify ( data ) 在客户端然后服务器端使用 JSON.parse( req.rawBody ) 这感觉不对,为什么Express.bodyParser没有正确parsingJSON?

在Express中处理文本/纯文本(通过连接)?

我正在使用Express 3,并希望处理文本/纯邮政。 Express 3现在使用connect的bodyParser (我认为旧的Express代码已经移动连接)。 bodyParser的文档给出了一些关于如何使其支持其他文件types的细节。 而且我发现了一个很好的博客文章,讲述如何在旧版Express中处理文本/纯文本 )。 我应该明确要求连接(并让节点需要caching修改后的版本)? 或者是连接暴露通过快递的地方? connect.bodyParser没有“parsing”键。 我如何使Express(通过连接)处理文本/纯邮政?

允许与Yeoman(1.0)grunt服务器进行跨域调用

我一直在使用Yeoman 0.9,直到昨天,我决定使用OS X上的beta 1.0版本。我使用Yeoman开发一个angular度应用程序。 随着我的应用程序的完成和工作的Yeoman 0.9 – > 1.0迁移,我现在渴望扩大开发的开发服务器 自耕农 grunt服务器,允许我跨域调用由另一个服务器托pipe的另一个团队开发的API,他们已经允许跨域调用。 到目前为止,我们一直在使用angular.js伪造的http后端。 – 旁边 – 如果有人正在阅读本文,寻求快速解决scheme,我们通过在OS X上使用这种方法在Chrome上从命令行向Chrome传递–disable-web-security选项,从而实现了跨域调用,但是它closures了所有的安全的铬(拇指向下),我们无法让Chrome作为一个新的实例发射。 – 结束 – 通过一些挖掘,我发现这个堆栈溢出发表 (通过这个职位的答案)给我一个很好的主意,我需要做什么来让grunt服务器允许跨域调用。 它基本上涉及添加一个中间件组件连接,以允许更改标题,以便“访问控制允许来源”设置为“*”或任何人喜欢。 对Node.js一无所知,我可以看到文章中提到的变化需要在Yeoman创build的许多文件中的某处进行,但是在哪里呢? 我已经在Yeoman设置的“node_modules”目录中对“app.configure”和“connect.listen”进行了一些原始stringsearch,但是我提出了许多命中,其中大部分来自模块捆绑的例子我不清楚应该编辑哪一个。 如果有帮助,这里是我的angular度应用程序的目录结构的快照: 如果任何人都可以给我一些关于这些变化可能的指示,我会很感激!

socket.io重新连接重新运行连接?

我已经构build了一个简单的Web应用程序,通过使用socket.io的node.js服务器进行一些通信。 当用户连接时,节点传回回信息告诉客户订阅某些事件。 这工作正常。 但是,如果您让浏览器设置为空闲状态,那么客户端将最终订阅事件两次。 订阅过程如下所示: 当用户连接node.js得到一个“adduser”消息 这个function的两个关键的东西是: socket.on('adduser', function(data) <snip> socket.emit('nodeinfo', {node_id: NODE_ID}); socket.emit('update', {msg: 'you are connected'}); socket.emit('nodeinfo')通知客户订阅事件。 所以客户有 socket.on('nodeinfo', function(data) { … } 事情是从来没有说'你连接'了两次,'adduser'中的console.log()函数在节点端再次被调用。 似乎发生的唯一情况是node.js再次发出nodeinfo(或者客户端认为)导致客户端重新订阅。 任何人都可以向我解释如何重新连接在socket.io工作,以及如何可能发生?

Connect / node.js – 创build一个简单的服务器

我试图让connect / node.js很好地,简单地一起工作。 我有以下(在咖啡文字) connect = require('connect') io = require('socket.io') server = connect.createServer( connect.favicon() , connect.logger() , connect.static(__dirname + '/public') ).listen(8000) socket = io.listen(server) socket.on 'connection', (socket) -> socket.send({ hello: 'world' }) 但不断收到以下错误: TypeError: Cannot call method 'listeners' of undefined 看起来服务器没有及时初始化套接字来开始监听。 与之比较: io = require ("socket.io") http = require('http') server = http.createServer() server.listen(8000) socket = […]

连接coffeescript的中间件?

是的,我知道connect-assets 。 但我希望可以根据请求编译coffeescript文件。 就像在stylus中间件。 app.use(stylus.middleware( src: __dirname + "/assets", dest: __dirname + "/public" )) 所以…有什么这样的作品? 编辑 :我也知道connect.compiler 。 但它已被删除在最新版本的connect 。

使用PassportJS和NodeJS的Connect来validationFacebook用户

我试图使用连接将护照集成到我的nodejs服务器,但似乎无法正确执行。 所有的指南/例子使用expressJS,所以我尽我所能重新格式化代码来处理我的代码,但我似乎无法得到它的工作。 相关部分如下所示。 有没有人对这个问题有什么build议? passport.authenticate()似乎永远不会被调用(至less在Facebook身份validationcallback内的console.log消息从不打印)。 我目前没有保存任何东西到数据库,所以这个问题应该希望是一个非常简单的东西,我只是想念。 唯一想到的是我对Facebook的潜在callback,这是一个本地主机url(因为我仍然在本地开发)。 我能够通过使用everyauth(来自纯粹的本地实例)来正确validationfacebook,但转而使用passportJS,因为我遇到了PassportJS似乎要解决的不同问题。 passport = require('passport'); fpass = require('passport-facebook').Strategy; passport.serializeUser(function(user,done){ done(null, user); }); passport.deserializeUser(function(obj,done){ done(null,obj); }); passport.use(new fpass({ clientID:'facebook app id', clientSecret:'facebook app secret', callbackURL:'http://localhost:3000/auth/facebook/callback' }, function(accessToken, refreshToken, fbUserData, done){ console.log('got here'); return done(null,fbUserData); } )); function checkLoggedIn(req, res, next){ console.log("req.user: " + req.user); if(req.user) next(); else{ console.log('\nNot LOGGED IN\n'); […]

使用Nodejs Connect重新生成会话ID

我正在使用一个Node.js服务器,我正在开发与Connect框架。 我试图在给定的时间间隔之后重新生成SID,以避免会话固定。 有一种方法称为req.session.regenerate ,根据文档,应该做到这一点。 “重新生成会话只需调用该方法,一旦完成一个新的SID和会话实例将被初始化在req.session» 示例代码: req.session.regenerate(function(err){ // will have a new session here }); 在调用上面的方法之后,我检查了req.sessionID的值,只是发现值和以前一样。 如果我尝试从req.session.regenerate中获取sessionID并将其写入terminal,我会得到一个新的SID,这更加令人困惑〜IE为什么要只在callback的范围内生成SID? 如果我把值赋给一个全局variables,它的值是未定义的。 我有一种感觉,那就是我忽视的东西。 任何帮助表示赞赏。

控制会话以express和连接中间件开始

有一种方法来控制会话何时开始连接的会话中间件? 例如,如果我有快速应用程序configuration: var app = express(); app.configure(function(){ app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser('secret')); app.use(express.session({ store:sessionStore, … })); }); 然后在每个请求中,如果没有给出会话cookie,则启动一个会话。 如果我只想在用户通过身份validation时才开始会话,该怎么办? 例如,说我有两个路线/protected和/login 。 如果有人点击/protected没有会话cookie,中间件将不会启动一个新的会话。 ( req.session为null ) 如果有人点击/protected会话cookie,中间件将检查 cookie是否存在匹配的活动会话并设置req.session ,但不会启动新的会话。 ( req.session可以有一个值或为null ) 如果有人用正确的参数点击/login ,则显式启动一个会话,然后只设置一个cookie。 开始会议的唯一方法应该是明确的: app.post('/login', function(req, res, next) { // connect to database and validate user… db.authenticate( req.body.user, req.body.pass, function(allow) { if (allow) { // START SESSION […]

如何在Connect中间件中使用asynchronous初始化?

我为Connect和Express编写了一个中间件,需要一些繁重的工作。 由于初始化任务的性质,这个东西是asynchronous的,所以我有一个问题,即中间件只能在初始化运行后才能访问。 目前我已经解决了它使用callback: function setupMiddleware(callback) { doSomeAsyncInitialization(function () { callback(function (req, res, next) { // The actual middleware goes here … }); }); } 这有效,但对呼叫者不好。 而不是能够做到 app.use(setupMiddleware()); 我要做: setupMiddleware(functin (middleware) { app.use(middleware); }); 现在我正在考虑是否有更好的方法,例如让中间件在后台初始化,并延迟所有传入的请求,直到中间件准备就绪。 我怎么能解决这个问题? 我应该在这里使用任何想法或最佳做法?