Tag: express

如何在服务器端构buildNode,Express,Connect-Auth和Backbone应用程序?

我是一个刚刚踏入服务器端JavaScript的世界的客户端。 我有这个想法,我想我想build立我的第一个Nodejs应用程序。 我想要一个服务器端,几乎只提供一个空壳和大量的JSON。 我想把其余的逻辑放在配备Backbone.js的前端。 所以我快速的掀起了一个小应用程序(代码在底部),我有几个问题。 会话variables是否安全? 我可以使用会话variables来存储一个用户标识符,我以后读取以获取敏感date。 是否有可能修改会话variables,在我的情况下,一个用户可以获得另一个用户的数据? 以我在“/ profile”path上的方式提供JSON服务是否合理? 在我的应用程序中会有很多像这样的路线。 从数据库获取某些内容并将其作为JSON提供给客户端的路由。 看我的代码,你有任何提示或技巧? 我应该做的不同。 我可能应该看看模块? 我的想法几乎只有JSON后端才有意义吗? 我的申请如下。 var facebook = { 'appId' : "my app id", 'appSecret' : "my app secret", 'scope' : "email", 'callback' : "http://localhost:2000/" } var express = require('express'); var MongoStore = require('connect-mongo'); var auth = require('connect-auth') var UserProvider = require('./providers/user').UserProvider; var […]

socket.on('连接'…事件永远不会触发nodejs + express + socket.io

问题 socket.io不工作 细节 用express [folder]; cd [folder]; npm install;生成一个项目express [folder]; cd [folder]; npm install; express [folder]; cd [folder]; npm install; 安装socket.io npm install socket.io 运行下面的代码节点应用程序 客户端连接事件触发,但服务器连接从未被解雇。 build立 服务器 AWS免费套餐,Ubuntu 11.10,ami-a7f539ce nodejs v0.6.5 express v2.5.1 socket.io v0.8.7 客户 var socket = io.connect('http://example.com:3000'); socket.on('connect', function() { console.log('connected'); }); socket.on('message', function(msg){ console.log(msg); }); socket.on('disconnect', function() { console.log('disconnected'); }); […]

Mongoose模式:validation唯一字段,不区分大小写

我有一个userSchema像这样: var userSchema = new Schema({ name: { type: String , required: true , validate: [validators.notEmpty, 'Name is empty'] } , username: { type: String , required: true , unique: true , validate: [validators.notEmpty, 'Username is empty'] } }); username段应该是唯一的。 如果这个用户名已经存在于数据库中,Mongoose会抛出一个错误。 但是,这不是大小写敏感的,我需要它。 我是否认为实现不区分大小写的唯一检查的唯一方法是编写自己的validation规则,它将对集合执行查询? 是否可以写这样的validation检查,创build更多的连接到集合? 我也需要为email做类似的事情。

Node.js – Express.js JWT在浏览器响应中总是返回一个无效的令牌错误

我用express-jwt模块使用了node.js和express.js,并且设置了一个简单的HTTP服务器来testing一切: 这是涉及的节点代码: app.set('port', process.env.PORT || 3000); app.use(express.methodOverride()); app.use(allow_cross_domain); app.use('/api', expressJwt({secret: '09qrjjwef923jnrge$5ndjwk'})); app.use(express.json()); app.use(express.urlencoded()); app.use('/', express.static(__dirname + '/')); app.use(function(err, req, res, next){ if (err.constructor.name === 'UnauthorizedError') { res.send(401, 'Unauthorized'); } }); app.get('login',function(req,res){ //… jwt.sign(results.username+results.email, secret, { expiresInMinutes: 9000000000*9393939393393939393939 }); }); app.post('api/profile',function(req,res){ console.log(req.user); // this return undefined in console res.send(req.user); // response is pending and dunno why […]

如何在我的Heroku Node Express应用程序中使用LetsEncrypt SSL证书?

我有一个在Heroku上运行的Node Express应用程序,我想用来自LetsEncrypt的免费SSL证书进行encryption。 但是,我所看到的方法需要打开端口443和80,以使ACME进程正常工作。 Heroku只给你一个端口,不让你select哪个端口。 那么我怎样才能使用LetsEncrypt? 我昨天花了一大堆时间搞清楚了。 第一次很长一段时间,StackOverflow没有答案,我正在尝试做的事情!

将节点上传的文件stream式传输到Azure blob存储

使用Express与Node,我可以成功上传文件并将其传递到以下代码块中的Azure存储。 app.get('/upload', function (req, res) { res.send( '<form action="/upload" method="post" enctype="multipart/form-data">' + '<input type="file" name="snapshot" />' + '<input type="submit" value="Upload" />' + '</form>' ); }); app.post('/upload', function (req, res) { var path = req.files.snapshot.path; var bs= azure.createBlobService(); bs.createBlockBlobFromFile('c', 'test.png', path, function (error) { }); res.send("OK"); }); 这工作得很好,但Express创build一个临时文件并首先存储图像,然后从file upload到Azure。 这似乎是一个低效率和不必要的步骤,我最终不得不pipe理临时文件目录的清理。 我应该可以使用Azure SDK中的blobService.createBlockBlobFromStream方法将文件直接stream式传输到Azure存储,但是我不太了解Node或Express以了解如何访问stream式数据。 app.post('/upload', function (req, res) […]

Express js的身体parsing器不工作?

我在我的节点服务器中使用快递以下(截断到重要的部分): var app = express.createServer(); app.all(/test/,function(req,res){ console.log(req.headers); console.log(req.body); res.send(""); }); function appStart(cobrands){ app.configure(function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); app.use('/min',express.static('../min')); app.use('/js',express.static('../js')); app.use('/css',express.static('../css')); app.use('/img',express.static('../img')); }); app.listen(8080); } 然后我有一个简单的表单调用localhost:8080像这样: <form action="http://localhost:8080/test" method="post"> <input type="hidden" name="test" value="testing"/> <input type="submit" name="submit" value="to node"/> </form> 但express.bodyParser似乎没有做任何事情,而且req.body是未定义的。 以下是console.log的输出: // req.headers { host: 'localhost:8080', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/534.48.3 (KHTML, like Gecko) […]

mongoose + express + mongodb声明多个模式后不能从数据库获取数据

我是新来的node.js和我有问题时访问多个mongoose模式声明。 模型中的//schema.js var mongoose = require('mongoose'); var Schema = mongoose.Schema , ObjectId = Schema.ObjectId; //User Schema var userSchema = new Schema({ id: ObjectId, firstname: {type: String, require: true}, lastname: {type: String, require: true}, username: {type: String, unique: true, require: true}, password: {type: String, require: true}, role: {type: [String], require: true} }) var User = mongoose.model('User', […]

如何在Node.js / Express中redirect(301)?

我有一个静态网站,一个简单的单页面布局,我部署在Dokku。 我需要redirect(301)从www到非www和从*.website1.com到website2.com ,但我不知道如何。 我试图在npm中使用express-force-domain,但是它使得我的URL变得疯狂并且有一些redirect循环,我尝试了在网上find的其他方法,但都没有成功。 我的server.js是: var express = require('express') var app = express(); app.set('port', (process.env.PORT || 80)) app.use(express.static(__dirname + '/public')) app.get('/', function(request, response) { response.send('Hello World!') }) app.listen(app.get('port'), function() { console.log("Node app is running at localhost:" + app.get('port')) }) 这是有用的版本,但没有redirect。

socket.io – 第一次工作,而不是第二次

当我启动我的node.js服务器和客户端连接,我能够发送来自客户端(socket.emit)的请求,并得到一个响应(socket.on('rentsAround'….))。 但是当我第二次连接时,客户端可以发送,但服务器不能发送或发送。 所以我必须重新启动服务器。 我明白,这是按预期工作,但不知何故,我的理解是错的地方…有人请指出。 客户端:======== var socket = new io.Socket(); socket = io.connect(); socket.on('rentsAround', function(data){ registration.handleRentsAround(data); }); socket.on('locationDetailsRes', function(data){ registration.handleRentsAround(data); }); socket.on('connect', function(data){ alert('inside connect on client side'); }); socket.on('disconnect', function(){ // do something, if you want to. }); …………. socket.emit("searchRent", {"lat":lat, "lng":lng}); 服务器端:======== socket.sockets.on('connection', function(client){ client.on('searchRent', function(msg){ console.log('inside on connection'); // do something and […]