Tag: 快速

NodeJS – 服务不能使用mongo –

在解释我的问题之前,这是我的架构: 1 – server is running, getting request and storing data 2 – a service – called process_runner.js – is running on a 2nd terminal 该服务的重点是从我的数据库获取数据执行一些function。 这是服务: process_runner.js // all needed requires /// … // mongoose.connect(config.database); var db = mongoose.connection; db.on('error', console.error.bind(console, 'Error connecting to MongoDB:')); db.once('open', function() { console.log("Connected to MongoDB"); try { run(); […]

'如何高效地通过node.js mongodb驱动程序stream大型json文档?

我正在写一个node.js应用程序,通过mongo node.js驱动程序查询到mongodb数据库。 我想要路由到一个大json文档呈现的链接,但是,我想为了性能方面的考虑而stream式传输文档。 代码如下: var express = require("express"), app = express(), MongoClient = require("mongodb").MongoClient; MongoClient.connect("mongodb://localhost:27017/database", function(err,db) { var query = db.collection("manzanas").find({ "_id": "query" }) .project({ "_id":0 }); app.get("/link", function(req,res) { query.stream().on("data", function(d) { res.json(d); }); query.stream().on("end", function() { console.log("done"); res.end(); }); }); }); app.listen(8080, function() { console.log("server is on!"); }); 问题是,我第一次尝试访问链接一切都按预期工作,但是当我尝试刷新页面或从另一个选项卡或浏览器访问路由的JSON文档不呈现,而页面试图刷新时虽然互联网连接非常慢, 并最终没有显示。 我不知道如何解决这个问题,如果我不stream式处理文档,只是显示它,但是我没有遇到任何问题,但是我想知道如何使它与stream一起工作。 为了使其再次运行,我必须完全退出node.js进程,但这不是生产模式场景的选项。 我怎样才能做到这一点,什么是最好的方法? […]

TDD先testingNodejs表示Rest Api – unit testing中间件/控制器/路由

我想弄清楚如何testing我的节点jsrestAPI应用程序。 到目前为止,我一直在使用nock拦截和模拟任何http调用,并通过testing我的服务作为一个组件。 (组件testing?)我想开始unit testing我的应用程序,所以我的testing金字塔更平衡,testing将更容易编写。 searchnetworking我得到了这种做法: http : //www.slideshare.net/morrissinger/unit-testing-express-middleware var middleware = require('./middleware'); app.get('example/uri', function (req, res, next) { middleware.first(req, res) .then(function () { next(); }) .catch(res.json) .done(); }, function (req, res, next) { middleware.second(req, res) .then(function () { next(); }) .catch(res.json) .done(); }); (基本上拉出中间件并testing它) 因为这个演示文稿是从2014年我想知道什么是当前最新的unit testing快递应用程序的方法?

将文件从受保护的path下载到浏览器

我有一个反应前端和一个nodejs / express后端。 后端可以通过受保护的路线提供文件(下载): GET /api/file/:id 当前端想要启动一个文件下载时,它使用这个代码向这个端点发送一个请求(并且Authorization头被设置了一个有效的token ): axios.get(`${apiURL}/file/${id}`) .then(file => { … }) 后端回应这个代码: router.get('/file/:id', requireAuth, = (req, res, next) => { … res.set('Content-Type', 'application/pdf'); res.download(file.path, file.filename); };); 这工作正常:下载开始,二进制数据存在于axios调用的axios .then()情况的file对象中。 我的问题: 而不是下载完整的文件,我想在文件下载开始之前将文件传递给浏览器,这样浏览器就像通常的浏览器触发下载一样处理下载,浏览器会提示下载或显示文件。 如何才能做到这一点…? 解决scheme: 感谢@FakeRainBrigand提示,我通过请求参数向路由添加了基于令牌的授权(使用护照策略): const jwtOptions = { jwtFromRequest: ExtractJwt.fromExtractors([ ExtractJwt.fromHeader('authorization'), ExtractJwt.fromUrlQueryParameter('token'), ]), secretOrKey: secretKey, }; 现在我可以将下载直接传递给浏览器来处理它: window.location.href = `${apiURL}/file/${_id}?token=${token}`;

如何在不重新启动应用程序的情况下为所有用户清除快速会话?

我正在使用nodejs express框架开发REST服务,并将会话中的用户特定数据与用户ID保持为识别用户数据的关键字。 这里是我用来存储用户特定数据的代码: let session = require("express-session"); let FileStore = require("session-file-store")(session); //For setting up the data into session session[userId]={name:xyz, age:22} //For getting the data session[userId] 我也configuration了会话到期时间,它必须清除所有的会话值。 webserver.use(session({ cookie: { maxAge: 60 * 1000 // 24 hours // maxAge: 24 * 60 * 60 * 1000 // 24 hours }, key: "sid", resave: false, saveUninitialized: false, […]

工头在Node.js中启动时出错

如果我尝试启动领class,得到以下消息。 我不知道我该怎么做才能进一步解决。 我想它的快递相关的错误,但仍然有任何帮助解决这个错误将真的很感激! 2013-04-21T10:39:54.622588+00:00 heroku[api]: Deploy fc0f862 by suchak.maulik179@gmail.com 2013-04-21T10:39:54.695655+00:00 heroku[web.1]: State changed from crashed to starting 2013-04-21T10:39:54.972645+00:00 heroku[slugc]: Slug compilation finished 2013-04-21T10:39:55.470897+00:00 heroku[web.1]: Starting process with command `node server/server.js` 2013-04-21T10:39:56.617617+00:00 app[web.1]: 2013-04-21T10:39:56.618147+00:00 app[web.1]: server = module.exports = express(); 2013-04-21T10:39:56.617811+00:00 app[web.1]: /app/server/server.js:7 2013-04-21T10:39:56.618147+00:00 app[web.1]: ^ 2013-04-21T10:39:56.621350+00:00 app[web.1]: TypeError: object is not a function 2013-04-21T10:39:56.621350+00:00 app[web.1]: […]

如何使用ExpressJS / Connect / Crypto获取(大)文件的校验和?

我需要生成一个大文件(.ISO),file upload校验和。 我正在使用ExpressJS / Connect通过POST(多部分)处理上传请求, //express setup app.js app.use('/upload',express.bodyParser({ defer : true, //enable progress event keepExtensions : true, limit : app.locals.fileLimit, uploadDir : path.join( __dirname, '..', 'tmp'), hash : true //this doesnt appear to do anything })); //express route routes.js app.post("/upload", function(req, res){ var fs = require('fs'); var format = require('util').format; req.form.hash = true; //this […]

node.jsstreamfile upload结构化文件夹

我做我的网站使用节点和expression一个小CMS。 我想使用一个表格positng多个文件,并将这些文件存储到公共/图像/文件夹名称。 所以我已经创build了一个表单,它有两个input:1.event – 这是事件名称2.file – 这是文件inputobvisuly 现在,当pipe理员login并看到这个表单时,他正在键入他的事件名称,例如“”生日“以及与之关联的图像文件。 最后,我希望结果如下:public / / image / birthday image1 image2 image3 image4 这里是HTML: <div class="panel panel-primary spacer3"> <div class="row"> {{#if error}} <div data-alert class="alert-box"> {{error}} <a href="#" class="close">&times;</a> </div> {{/if}} <div class="small-4 medium-4 large-4 columns text-center"> <h1>פאנל ניהול</h1> </div> <form method="POST" action="/login"> <div class="row"> <div class="large-12 columns rtl"> <label>שם […]

在Express js会话中存储一个实例

我正在使用expressjs会话,我有一个实例需要存储: function a(){this.name="";} var ins = new a(); req.session['user'] = ins; 当我下次得到res.session ['user']的时候,这个对象不是instanceof a,并且它不能访问任何原型方法,我怎样才能在会话中存储对象的ref,看起来会话会转换它到json对象

限制在Sails.js模型中设置的字段

所以我有一个像这样的字段的模型: // … slug: { type: 'string', required: true, alphanumeric: true, minLength: 3, maxLength: 16 }, loggedinAt: 'date', // … 我正在使用Sails蓝图结构,以便自动映射所有内容。 但是,有时我有像loggedinAt严格内部的字段,我不希望他们能够由用户设置。 如果我使用loggedinAt字段发布post请求,它将会设置它。 我怎样才能限制呢?