Tag: express

通过Mongoose的ObjectId查找MongoDB文档

我正在尝试通过ObjectId来查找MongoDB中的文档。 工作stream程如下(这是一个博客)。 通过传递标题和正文在MongoDB中创build一个新post。 ObjectId是自动创build的。 去编辑post。 它使用来自URL的ObjectId从数据库中获取数据,并以相同的新postforms显示它,只是使用预先存在的值。 当提交button被点击时,我想通过ObjectIdfind文档,并使用后表单中的值更新数据库中的值。 步骤1和2工作正常,但步骤3似乎并没有工作。 它redirect到我需要的页面。 但数据库尚未更新。 这和以前一样。 以下是更新post部分的相关代码: app.js app.post "/office/post/:id/update", ensureAuthenticated, routes.updatePost 路线/ index.js mongoose = require 'mongoose' ObjectId = mongoose.Types.ObjectId Post = require '../models/Post' … updatePost: function(req, res) { var o_id, the_id; the_id = req.params.id; console.log(the_id); // 510e05114e2fd6ce61000001 o_id = ObjectId.fromString(the_id); console.log(o_id); // 510e05114e2fd6ce61000001 return Post.update({ "_id": ObjectId.fromString(the_id) }, […]

Socket.io会话没有express.js?

我想通过node.js和socket.io来处理websocket的会话,而不必使用cookie并避免express.js,因为还应该有客户端不在浏览器环境中运行。 有人已经这样做了,或者有了一些概念validation的经验?

从节点服务器随机stream式传输pdf文件只是在浏览器上显示二进制数据

我有一个节点的应用程序(特别是帆应用程序)是服务的PDF文件。 我的代码服务文件看起来像这样。 request.get(pdfUrl).pipe(res) 而当我查看PDF的url,它呈现PDF罚款。 但有时,它只是呈现在浏览器上的PDF二进制数据如下所示。 %PDF-1.4 1 0 obj << /Title ( ) /Creator ( wkhtmltopdf 我无法弄清楚为什么不能正确地随机提供pdf。 这是铬的东西? 还是我错过了什么?

通过node-http-proxy持久基于cookie的会话

我有一个简单的基于Express的Node.js Web服务器,用于开发JavaScript应用程序。 我将服务器设置为使用node-http-proxy来代理应用程序对运行在不同域和端口上的Jetty服务器的API请求。 直到我开始遇到会话pipe理问题时,此设置一直在完美运行。 在authentication之后,应用服务器返回一个带有代表服务器会话的authentication令牌的cookie。 当我从我的文件系统(file://)运行JS应用程序时,我可以看到,一旦客户端收到cookie,就会在所有后续的API请求中发送。 当我在节点服务器上运行JS应用程序,并通过node-http-proxy(RoutingProxy)代理API调用时,请求标头永远不会包含cookie。 有什么我需要手动处理,以支持通过代理这种types的会话持久性? 我一直在挖掘node-http-proxy代码,但是由于我是Node的新手,所以这个代码有点过头了。 https://gist.github.com/2475547或者: var express = require('express'), routingProxy = require('http-proxy').RoutingProxy(), app = express.createServer(); var apiVersion = 1.0, apiHost = my.host.com, apiPort = 8080; function apiProxy(pattern, host, port) { return function(req, res, next) { if (req.url.match(pattern)) { routingProxy.proxyRequest(req, res, {host: host, port: port}); } else { next(); } } […]

阻止访问AngularJS中的pipe理页面

我想知道AngularJS中最好的方法是保护pipe理页面,即普通用户不应该看到的页面。 显然,会有后端authentication,但由于AngularJS应用程序是客户端,人们仍然可以从理论上看路由,直接转到这些URL并查看pipe理页面。 我使用Express,PassportJS和MongoDB(Mongoose)作为我的后端。 自然,他们将无法与pipe理页面进行交互,因为在创build,删除服务器端身份validation,但我宁愿甚至不提供页面给用户,如果他们没有适当的访问。 由于该应用程序是完全客户端JS,但我认为这是不可能的,因为人们可以修改路由和其他东西。 最好的办法是什么呢? 感谢您的任何意见!

从node.js服务器运行angular度

我有以下文件 – 1)index.html 2)app.js(angular度控制器在这里) 3)routes.js(我试图从这里加载index.html – 在localhost:3000上监听) 4)index.css 5)node_modules文件夹 routes.js: var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); server.listen(3000); app.use("/node_modules", express.static('node_modules')); app.use("/public", express.static('public')); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.sockets.on('connection', function(socket){ socket.on('send message', function(data){ io.sockets.emit('new message', data); }); }); 当我通过从文件资源pipe理器中单击打开index.html文件时,它正常打开正常。 但是,当我运行routes.js,以获取相同的index.html文件,我得到原始的HTML没有angular度的影响。 为什么是这样? 谢谢! 编辑: 我现在可以从localhost:3000/public/访问我的index.css和app.js。 我用app.use("/public", express.static('public')); 在我的routes.js 。 […]

有或没有令牌JWT + PASSPORT的路线可用

我希望我可以使用或不使用令牌来访问路由器。 如果用户有一个令牌,比给我req.user 喜欢这个: router.get('/profile', function(req, res) { if(req.user) { // or if (req.isAuthenticated()) res.send('logged') } else { res.send('not loggedIn') } }); 我的应用: var JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; var opts = {} opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); opts.secretOrKey = 'sh'; passport.use(new JwtStrategy(opts, function(jwt_payload, done) { User.findOne({id: jwt_payload.sub}, function(err, user) { if (err) { return done(err, false); […]

如何让Stylus在CoffeeScript中使用Express和Connect工作

我的app.coffee看起来像这样: connect = require 'connect' express = require 'express' jade = require 'jade' stylus = require 'stylus' app = express.createServer() # CONFIGURATION app.configure(() -> app.set 'view engine', 'jade' app.set 'views', "#{__dirname}/views" app.use connect.bodyParser() app.use connect.static(__dirname + '/public') app.use express.cookieParser() app.use express.session({secret : "shhhhhhhhhhhhhh!"}) app.use express.logger() app.use express.methodOverride() app.use app.router app.use stylus.middleware({ force: true src: "#{__dirname}/views" […]

永久会话存储在节点中

我有一个节点服务器现在运行,我npm forever使用npm forever保持运行,当我不开发,我用npm nodemon当我编辑(重新启动应用程序编辑/上传)。 我注意到,每当我重新启动我的应用程序,会话数据丢失,我的球员不得不重新login到他们的帐户。 这不是一个huuuge交易,但我想知道是否有一种方式来编辑我的server.js页面,而无需重新启动应用程序,并logging每个人? (请注意,这仅适用于server.js或模块编辑, .html和.js页面不需要重新启动) (第二个注意:我正在使用mysql,nodejs,angularjs,express.io所有这些,以防万一有人问)

如何在Heroku上的Node express应用程序中设置proccess.env

我有一个简单的节点与mongo(通过mongojs)应用程序,开发本地和部署在heroku上。 在我的开发环境中,我想使用mongo的本地实例,而在生产中,我想使用heroku通过“process.env.MONGOLAB_URI”提供给我的实例。 我目前的做法是,我将根据环境variables设置datavase url,但是我如何才能进入生产模式? 此外,我怎样才能configuration这个,当我在本地机器上开发它的开发模式,当我上传到heroku的生产模式? app.configure('production', function(){ // … databaseUrl = "mydb"; // the default }); app.configure('development', function(){ // … databaseUrl = process.env.MONGOLAB_URI; }); db = require("mongojs").connect(databaseUrl);