Articles of express

如何在nodejs中closures请求?

我拥有的: 我使用expression式 框架使用node.js ,并且我正在构build一个可以上传文件的表单,我正在使用node-formidable 。 有什么问题 我的问题是,我无法closures请求,如果我发现上传的文件错误。 我想检查文件types,大小等。所以我可以得到正确的file upload,而文件实际上没有上传,所以我不浪费时间。 所以问题是我无法停止HTTP请求。 我曾经尝试过 这是我迄今为止所尝试的: request.connection.destroy(); response.end('something went wrong…'); 我假设connection.destroy()中止请求,我知道这是因为它触发formidableforms中止事件( form.on('abort', function(){ … }) )但该文件仍在上传,并且该响应没有在file upload之后到达。 那么我应该如何closuresHTTP请求,并将消息发送回客户端呢? 编辑:和其他东西,当我不使用response.end()然后它的作品,除了客户端等待的答案,这很奇怪:\

为什么connect-mongo为每个请求创build新的会话?

我有两个nodejs服务器(networking服务器,套接字服务器),通过socket.io互相连接。 在Web服务上,我使用express.js和passport.js作为身份validation中间件。 这是我的networking服务器configuration: var express = require('express'), mongo = require('mongodb'), io = require('socket.io'), passport = require('passport'), LocalStrategy = require('passport-local').Strategy, MongoStore = require('connect-mongo')(express); app.configure(function () { app.use(express.cookieParser()); app.use(express.methodOverride()); app.use(express.bodyParser()); app.use(express.session({ secret: 'keyboard cat', store: new MongoStore({ db: 'MyDatabase' }) })); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(express.static(__dirname + '/htdocs')); }); 当我使用connect-mongo时,它为每个http请求创build一个新的会话。 这个元素创buildlogin请求: { "_id" : "UCnXade6Bk6ofOZ+jiEgzyH8", "session" : "{\"cookie\":{\"originalMaxAge\":31536000000,\"expires\":\"2014-03-07T13:07:45.703Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"50cae08806e31ea2e5634e3f\"}}", […]

如何用Oauth请求提交和处理请求参数?

我正在使用MeanJS堆栈来开发一个Web应用程序。 我遇到的问题是,我的常规注册过程有一些Oauth用户configuration文件不常见的独特参数。 所以,当我有用户去注册Facebook的时候,我把它们移动到一个新的registry单上,让他们填写额外的参数,然后点击“用facebook注册”。 这些路由与在这里find的常见MeanJS路由相同: https : //github.com/meanjs/mean/blob/master/app/routes/users.server.routes.js 具体来说这些行: app.route('/auth/facebook').get(passport.authenticate('facebook', { scope: ['email'] })); app.route('/auth/facebook/callback').get(users.oauthCallback('facebook')); 我想要做的是有额外的参数附加到请求对象,所以当auth进程到达exports.saveOAuthUserProfile里面: https : //github.com/meanjs/mean/blob/master/app/ controllers / users / users.authentication.server.controller.js这个函数将能够访问这些参数并将它们保存为用户模型的一部分。 我已经尝试将参数附加到获取请求和访问 req.params.paramId 但这是行不通的,因为你不能注册一个param加载的请求与Facebook的API(或至less它似乎是这样)。 而且我在StackOverflow的其他地方读过,你可以加载请求状态,但对我来说这似乎很奇怪。 以下是该链接: Facebook OAuth:自定义callback_uri参数 因此,有关如何将额外数据加载到Oauth请求的指导,以便在保存用户configuration文件时,我可以访问并保存它,这将是非常棒的。 多谢你们。

使用express将MongoDB查询结果作为JSON发送

我正在写一个应用程序,我使用express,Node.js和MongoDB(使用mongojs)。 我有一个模块db.js和一个server.js ,下面有代码片断。 db.js var getUsersByCity = function(city, callback) { db.users.find({'city': city}).toArray(function(err, data) { if (err) { callback(err); console.log(err); } else { console.log(data); callback.json(data); } }); } server.js app.post("/get_users_list", function(req, res) { var body = req.body; db.getUsersByCity(body.city, res); }); 这是工作,因为,你可以看到,我(可能不正确)使用callback.json(data) ,当我应该使用callback(data) 。 我认为db.js模块不应该负责发送响应,我应该通过res.json作为我的函数的callback。 问题是:当我按照我认为正确的方式做事情时,我面临着以下错误: path_to_my_app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/base.js:245 throw message; ^ TypeError: Cannot call method 'get' of undefined […]

在Express.js中使用PUT方法

我试图实现一个Express.js应用程序的更新function,我想使用PUT请求来发送新的数据,但我不断收到错误使用PUT。 从我读过的所有内容来看,这只是使用app.put的问题,但这是行不通的。 我的路线文件中有以下内容: send = function(req, res) { req.send(res.locals.content); }; app.put('/api/:company', function(res,req) { res.send('this is an update'); }, send); 当我使用邮递员进行PUT请求时,我得到一个“不能PUT / api / petshop”的错误。 我不明白为什么我不能PUT,或者出了什么问题。

如何在nunjucks中使用JSON.parse

我在mongodb获取数据,并express返回发生没有错误,但我想在我的.find的最终结果中使用JSON.parse看到如何我试图做到这一点 app.get("/login", (req, res) => { var credentialClient = { expire_at: false, __v: false, _id: false }; rememberMe.find({ username: "test-login" }, credentialClient, function (err, credentialInfo) { if (err) { res.send(err); } else { res.render("login.html", { usernameClient: JSON.parse(credentialInfo) }); } }); }); 没有JSON.parse最终的渲染保持在我的login.html { username: 'test-login' } 最终结果出现在login.html <p class="center-align black-text" id="preFinalCredentialClient">{{ usernameClient }}</p> 感谢您的帮助!

在不超过堆栈限制的情况下,通过大量庞大的函数进行迭代或recursion的最佳方法是什么?

我有一个应用程序,我正在编写Node.js需要进行大量的configuration和数据库调用,以处理用户数据。 我遇到的问题是,在11800多个函数调用之后,Node会抛出一个错误并退出进程。 错误说:RangeError:超过最大调用堆栈大小 我很好奇,如果有其他人有这种情况出现,并知道他们如何处理这个。 我已经开始将我的代码分解成几个额外的工作文件,但即使如此,每次处理数据节点时,都需要触摸2个数据库(最多25次调用更新各种表),并执行一些清理检查。 我完全愿意承认,如果情况确实如此,我可能会做一些非最佳的事情,但是如果有一个更优化的方式,我会欣赏一些指导。 以下是我在数据上运行的代码示例: app.post('/initspeaker', function(req, res) { // if the Admin ID is not present ignore if(req.body.xyzid!=config.adminid) { res.send( {} ); return; } var gcnt = 0, dbsize = 0, goutput = [], goutputdata = [], xyzuserdataCallers = []; xyz.loadbatchfile( xyz.getbatchurl("speakers", "csv"), function(data) { var parsed = csv.parse(data); console.log("lexicon", parsed[0]); for(var […]

如何在没有页面重新加载的情况下将任意的JSON发送到node.js?

我的最终目标是在点击一个button时发送一个任意的JSON给node.js。 我目前只知道如何从窗体发送input。 以下是我发送表单信息的一些代码: function postForm() { $('form').submit(function(e) { e.preventDefault(); // no page reload $.post( $(this).attr('action'), $(this).serialize(), function(data) { console.log('Code for handling response here.') }, 'json' ); }); } HTML的外观如下所示: <form action='/send' method='post'> <input name= "foo" type="radio" value=1> <input type="submit" value="Submit"> </form> 相关的express / node.js代码如下所示: app.post('/send', function(request, response) { fs.appendFile('test.txt', JSON.stringify(request.body) + '\n', function(e) { if(e) […]

如何使用MongoLab在Heroku上设置MongoDB数据库?

我正在使用Express.js和MongoLab,我跟着Heroku安装程序来让MongoDB在生产环境中工作 ,把这段代码扔到我的app.js中 。 //Mongo on Heroku Setup var mongo = require('mongodb'); var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/mydb'; mongo.Db.connect(mongoUri, function (err, db) { db.collection('mydocs', function(er, collection) { collection.insert({'mykey': 'myvalue'}, {safe: true}, function(er,rs) { }); }); }); 我的电子邮件表单(也在app.js中)有以下路线和字段: //Routes app.get('/', function(req, res) { res.render('index', { title: 'DumbyApp' }); }); //save new email app.post('/', function(req, res){ […]

如何使用Node和Express与coffeescript和requirejs?

这是我想要的。 使用快速Web服务器的节点应用程序 在服务器上使用coffeescript,更重要的是使用客户端 在客户端(最终在服务器上)使用require.js 我已经能够find为客户端连接 coffeescript的推荐方式是使用连接资产 。 这似乎需要使用玉助手实际编译咖啡脚本如。 !=js('monalisa.js') 似乎编译monalisa.coffee并生成正确的<script>标记。 现在我想使用require.js,在这里我绊倒。 如何确保连接资产正确编译所有内容,而不使用玉器助手? 这是我相当简单的app.js: require('coffee-script'); var express = require('express') , http = require('http') , path = require('path') , connectAssets = require('connect-assets'); var publicDir = path.join(__dirname, 'public'); var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use( […]