Tag: express

使用Node.js,Express.js和gridfs-stream直接将文件stream式传输到GridFS

我使用的是最新版本的express,mongodb,nodejs等。我没有使用正文parsing中间件,因为我不想在磁盘上传文件时将文件存储。 我只是想将它们直接stream入GridF。 我正在使用gridfs-stream npm模块。 我知道ExpressJs在底下使用强大。 请记住 – 我不希望文件打到磁盘。 这里是我的路由处理程序,我只是发布一个多部分表单 – 表单包含一个文件,只有1-3可选字段。 为什么哦为什么form.on('部分',函数(部分)) – 多次调用文件的相同部分超过100kb,而对于较小的文件 – 我们只是得到一个调用? 我真正想要做的是实际上将一个文件从一个上传文件直接传输到GridF中,并将同一文章中的所有表单文章域添加到GridFs元数据中。 mymodule.prototype.save = function(req,res,next) { if(req._body) { //return next(); }else if(contentType(req) !== 'multipart/form-data') { return next(); } var gfs = Grid(req.ctx.app.database.connection.db, mongo); req.body || (req.body = {}); req.files || (req.files = {}); var form = req.form, body = req.body, […]

你如何得到一个咕task任务来保存一个新的简单的MongoDB文件?

我一起使用mongoose和自定义的咕噜声任务有问题。 我所要做的就是创build一个类似于简单放置请求的任务,通过在命令行中给予任务的参数并将其处理/保存到数据库中。 但是,当我希望在添加后在数据库中find它时,我无法在任何地方find它。 目标是创build一个新的公司,并保存4个简单的参数,从“grunt addcompany:a:b:c:d”命令中保存。 这里是“公司”模式(我保持它非常基本): var mongoose = require('mongoose'), Schema = mongoose.Schema; var Company = new Schema({ name: String, email: String, info: String, also: String }); module.exports = mongoose.model('Companies', Company); 这是我的Gruntfile.js的顶部: var schemaCompany = require('./models/company'), mongoose = require('mongoose'), db = mongoose.connection, Company = mongoose.model('Companies', schemaCompany); 这是任务: grunt.registerTask('addcompany', 'add a company', function(n,e,i,a) { var done […]

Github API OAuth令牌validation

有什么办法来validation我的OAuth令牌的github API? “令牌”是指用户login到我的网站后得到的。 我使用cookie将其存储在客户端计算机上,但只检查是否有令牌是不够的:我需要实际检查令牌是否有效。 目前这需要我提出信息请求,然后捕捉错误。 然而,这是真正的损害我的利率和我的加载速度作为github API是sloooow …我使用Node.js,快递和octonode库。 我试着看github的API文档,但它们是微乎其微的。 也许这是关于OAuth,我不确定。 提前致谢。

设置浏览器cookie

我的问题:我的浏览器没有得到会话cookie设置。 这导致对服务器的所有请求不相互关联(例如1)进行身份validation,然后2)获取一些数据)。 背景/环境: 我正在构build一个有移动和networking端的产品。 我已经开发了这个网站,它的工作很好,所以现在我正在使用Cordova的移动应用程序(所有这些都是JavaScript)。 我想为网站使用与移动应用程序相同的后端。 在testing一切时,我只想在浏览器中运行我的应用程序,所以我不必一直模拟iOS设备,而是在浏览器中获得更好的debugging工具。 为了做到这一点,我运行一个简单的http服务器上的目录,所有我的html / css / js文件。 一切似乎都很好,直到我开始与服务器交互。 我的设置 : 服务器在localhost:3000上运行。 该cordova应用程序正在本地主机上:3001服务。 当移动应用程序加载时,它所做的第一件事是打到http://localhost:3000/api/v1/auth/isAuthenticated ,它返回{isAuthenticated: true|false} 。 端点所做的是无关紧要的。 与此相关的是,浏览器中的移动应用程序不会获取sessionId cookie,因此所有到localhost:3000上的服务器的请求都具有不同的sessionId,因此即使我能够正确地进行身份validation,下一个请求与authentication用户没有关联,因为它没有sessionId cookie。 我的问题:解决这个问题的好方法是什么? 我如何将cookie设置在刚刚触及端点的浏览器上? 我是否应该使用像oauth2orize这样的东西,并做一些令牌交换? 其他有趣的笔记: 我正在使用express.js会话。 实际上,我已经用最新的3.x版本和4.x的候选版本来尝试这个了。 这个伎俩也没有。 当我在iOS模拟器中模拟移动应用程序时,一切都很好(只是不是开发的最佳位置) 我使用CORS来允许我的localhost:3000响应来自localhost:3001的请求。 请求正在工作,这只是没有设置的cookie是问题。 鸭嘴兽是产卵的唯一哺乳动物,而不是分娩:) 谢谢!

在Heroku上使用节点git-rev

我正在使用节点包git-rev让我的应用程序输出它自己的版本。 所以我创build了这个方法: var git = require('git-rev'); module.exports = function (req, res) { git.long(function (commit) { git.branch(function (branch) { git.tag(function (tag) { res.json({ 'commit': commit, 'branch': branch, 'tag': tag }); }); }); }); }; 它在我的本地机器上正常工作,但在heroku上,它只是返回 { "commit": "", "branch": "", "tag": "" } 我的package.json包含"git-rev": "~0.2.1"作为依赖项,我无法在heroku日志中find提示。 为什么它不能在heroku上工作?

jQuery ajax post在Node + Express的JSON响应上生成“Unexpected token:”

jQuery ajax post在Node + Express的JSON响应上产生一个错误“Unexpected token:[newline]”: SyntaxError {stack: "SyntaxError: Unexpected token :↵ at eval (nativ…st:3000/javascripts/jquery-1.10.1.min.js:6:18626)", message: "Unexpected token :"} 在服务器上: app.post('/api/sav', function(req, res, next) { var result = {"status": "success"}; res.send(JSON.stringify(result)) // this works //res.type('json'); // this has no effect //res.type('application/json'); // this has no effect //res.send(result); // this fails but should work, no? //res.json(result); […]

CORS无法在Firefox中运行

我试图得到一个简单的例子与MEAN堆栈工作,我注意到我的DELETE请求在Firefox中不起作用。 我相信这是由于CORS。 当我点击一个链接提交DELETE请求与angularJS到我的ExpressJS后端,我看到一个GET请求被首先调用,然后调用实际的DELETE请求,但DELETE请求永远不会结束。 这一切似乎工作在Chrome没有问题。 没有意外的GET请求调用,DELETE请求实际上完成。 我怎样才能使这个工作在Firefox? 快递部分为Cors: // CORS Stuff in app.js app.all('*', function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Authorization, Content-Length"); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); if(req.method == 'OPTIONS') { res.send(204); //next(); } else { next(); } //res.send(200); }); app.get('/notes', note.get(db)); app.post('/notes', note.create(db)); app.put('/notes/:id', note.update(db)); app.delete('/notes/:id', note.delete(db)); 然后我有这个note.js文件 exports.delete = function(db) { return function(req, […]

如何在node.js网站中组织模型?

我刚刚开始尝试使用node.js构build网站,并且在组织项目模型时遇到问题。 我在互联网上find的所有真实世界的例子都使用了Mongoose。 这个库允许你以静态的方式定义你的模型。 所以你可以写这个: // models/foo.js module.exports = require('mongoose').model('Foo', …); // app.js mongoose.connect(…); // some_controller_1.js var Foo = require('./models/foo'); Foo.find(…); // some_controller_2.js var Foo = require('./models/foo'); Foo.find(…); 但是由于我不想使用MongoDB,我需要另一个ORM。 而我发现的所有其他ORM都不允许这样做。 你首先需要创build一个实例,然后只有你可以注册你的模型。 他们似乎也不允许访问注册模型列表。 所以我试着这样做: // models/user.js var registrations = []; module.exports = function(sequelize) { var result = null; registrations.forEach(function(elem) { if (elem.db == sequelize) result = elem.value; […]

表示路由将JSON返回给Angular表单问题

我用于注册/login用户的angular度控制器如下所示: angular.module('SignCtrl', []).controller('SignController', function($scope) { $scope.formData = {}; $scope.processForm = function() { $scope.submitted = true; $http.post('/sign', { email: $scope.formData.email, password: $scope.formData.password }).success(function(res) { $scope.response = res; }); }; }); 这将POST数据发送到正确的路由,控制器从那里正确处理所有事情。 但是,控制器返回res.json({ response: result }); 并提交表单后,它只显示JSON时,我想将JSON插入到表单中。 快速路由/控制器,HTML格式: app.post('/sign', function(req, res) { var email = req.body.email; var password = req.body.password; User.findOne({ email: email }, 'email', function(err, user) […]

从ExpressJS下载PDF(PDFKit)到AngularJS

使用: var doc = new PDFDocument(); doc.pipe(res); doc.text('Add content here'); doc.end(); 在Express GET路线中,我可以在浏览器中导航并查看PDF。 一旦查看,可以保存或打印。 这很好,但我需要的是PDF自动下载。 应用程序将发送一个PUT到Express。 从一个PUT ,是否有可能也自动下载PDF? Angular需要一个200响应来将控制权交还给Angular和用户,但是PDF也需要下载。 我试过res.end(new Buffer(doc), 'binary) , res.send(new Buffer(doc, 'binary'))等,但无法获得PDF下载。 如果我无法返回200并从PUT下载PDF,那么我的回退是PUT ,一旦返回,就会打开一个窗口,打开GETpath查看PDF。 那种哈克,所以我真的更喜欢下载。 选项?