Tag: 表示

使用NodeJS和Multer将图像上传到S3。 如何上传整个文件onFileUploadComplete

我正在使用NodeJS和Multer将file upload到S3 。 从表面上看,所有东西似乎都在工作,文件被上传了,当我login到AWS控制台时,我可以在bucket看到它们。 但是,大多数时候,当我按照文件的链接,文件被打破,文件的大小通常比原来的文件小得多。 当文件到达服务器时,如果我log ,文件大小是正确的,但是在S3上它是小得多的。 比如我刚刚上传了一个151kb的文件。 post请求正确地logging文件大小,但在S3上 ,文件说它是81kb。 客户端: uploadFile = (file) -> formData = new FormData() formData.append 'file', file xhr = new XMLHttpRequest() xhr.open "POST", "/upload-image", true # xhr.setRequestHeader("Content-Type","multipart/form-data"); console.log 'uploadFile' xhr.onerror = -> alert 'Error uploading file' xhr.onreadystatechange = -> if xhr.readyState is 4 console.log xhr.responseText xhr.send formData 服务器: app.use(multer({ // […]

如何将您的模型展示给应用程序和路线

我使用Waterline作为我的ORM和Express一起使用。 我想知道什么是最好的方式是揭露我的模型,所以我可以在我的应用程序中使用它们。 到目前为止,我必须调用req.app.models.model_name这似乎有点复杂。 这个代码示例工程,但我只是不太确定这是否是一个很好的做法,因为我是Node.js / Waterline和Express的新手。 我的文件夹结构是由expression式生成器做的一些修改: ├── app.js ├── bin │ └── www ├── models │ ├── index.js │ └── links.js ├── package.json ├── public │ ├── images │ ├── javascripts │ └── stylesheets │ └── style.css ├── routes │ ├── index.js │ └── users.js └── views ├── error.jade ├── index.jade └── layout.jade 这就是我在模型中使用Waterline的方式。 […]

节点JS中的单个定时器或多个定时器?

你好! 我正在开发拍卖节点Js(Express框架,socket.io)。 你能告诉我什么是更好的方式使用每个产品的每个产品或多个计时器的单个计时器? 例如(代码是最小的): 一旦开始… for(active products) { timer[timer_id] = setInterval(.. sec–; …. ) } 或每秒… timer = setInterval(.. for(only active products) { sec–; } ) 两个编程代码现在都在工作。 但是我想知道哪种方式更好,还是有其他方法可以做到这一点? 提前致谢!

我可以知道使用Express呈现模板客户端Vs服务器端的最佳方式吗? 和性能?

select服务器端Vs客户端渲染越来越困难,可以有一个你的想法或引用这个? 哪一个会给更好的performance?

错误EMFILE,在ejs中打开太多的文件

我使用ejs-local为我的node.js应用程序呈现视图。 我看到很多打开的文件“渲染视图时出现exception: Error: EMFILE, too many open files '/home/user/app/views/index.html' at Object.fs.openSync (fs.js:432:18) at fs.readFileSync (fs.js:289:15) at Object.exports.renderFile (/home/wangchen/bweb_auto/node_modules/ejs-locals/node_modules/ejs/lib/ejs.js:313:9) at View.module.exports [as engine] (/home/user/app/node_modules/ejs-locals/index.js:85:7) at View.render (/home/user/app/node_modules/express/lib/view.js:76:8) at Function.app.render (/home/user/app/node_modules/express/lib/application.js:506:10) at ServerResponse.res.render (/home/user/app/node_modules/express/lib/response.js:759:7) at /home/user/app/routes/index.js:226:17 at Query._callback (/home/user/app/node_modules/orm/lib/ChainFind.js:190:13) at Query.Sequence.end (//home/user/appode_modules/mysql/lib/protocol/sequences/Sequence.js:75:24) 这拆掉了整个网站。 虽然貌似添加ulimit可能会解决这个问题:它的当前设置为1024.我更关心ejs代码/节点中可能的错误,在必要时没有closures文件。 你有没有遇到类似的事情?

我如何知道Mongoose addToSet实际上添加了什么?

我有一个包含项目的数据库,每个项目都有一个链接数组。 添加链接时,我的express.js代码是这样的: router.get('/links/add', function(req, res){ Project.findOneAndUpdate( {_id: req.query.pid}, {$addToSet: {links: {url: req.query.url , title: req.query.title} }}, {safe: true, upsert: true, new:true}, function(err, project) { if(err) { //do stuff } else { //Something was added to set! } } ); }); 它工作得很好,不添加重复,但我需要知道什么时候实际更新。 现在,你可以看到我已经启用了new:true选项,它返回新文档,所以我可以删除它,看看链接是否存在于旧版本,但有没有办法做到这一点启用标志? 这似乎是一个基本的function,但我无法find任何文件。

在timout上从node.js获取栈回溯?

我正在使用node.js与域和cluster捕捉意外的exception(程序员错误),然后重新正常启动。 然而,我们偶尔.catch().finally()程序员不能添加最后的.catch().finally()来确保他们的代码实际返回。 我可以很容易地添加一个超时,在预先指定的时间之后抛出一个exception,以确保这些不好的请求不会永远活着。 但是我想要做的是让超时信息从域中解脱出来,以解释请求中发生了什么,这样我们就可以得到一个日志/通知/无论从哪个开始, 。 有没有合理的方法来做到这一点? 如果是这样的话,我们使用express作为框架, express-domain-middleware来获取域/重启逻辑,并承诺asynchronous逻辑。

Express:设置maxAge后,单个文件的SetHeader'Cache-Control'

节点新手在这里。 下面的代码导致所有文件都接收到响应头“Cache-Control public,max-age = 31536000”。 我希望索引的最大年龄为0.我尝试了几种不同的方法,但其根源似乎是我的一个更基本的误解。 为什么下面的res.setHeader行不生效(以便我能理解我的误解),以及确保Index.html不被caching的正确方法是什么? var express = require('express'), gzipStatic = require('connect-gzip-static'), app = express(), port= process.env.PORT || 3030, cacheAge = 365 * 24 * 60 * 60 * 1000; app.use(gzipStatic(__dirname + '/public', { maxAge: cacheAge })); app.get('/', function(req, res) { res.setHeader('Cache-Control', 'max-age=0'); res.sendFile('index.html'); });

有没有什么办法只能在请求主体快递?

在我的项目中,有两个Web服务器,一个是nodejs来处理来自前端(authentication,acl control,…)的请求,另一个是真正的工作的Java无状态服务器。 nodejs服务器需要向后端java服务器发送file upload(multipart / form-data)请求。 我试图通过request模块pipe道上传的原始数据。 app.post('/file/upload', function(req, res, next) { req.pipe(request.post('http://java-server/file/upload', function(err, resp, body) { if (err) { return next(err); } res.json(body); })); }); 问题是我pipe道整个请求(包括头),而不是只是身体数据。 我找不到任何方法来获得像req.body.stream()所以我可以直接pipe道上传的文件。 这样,我不能插入额外的头,如Java服务器所需的Authorization 。 有人帮助吗? 谢谢。

如何查找表单参数的存储位置,并在请求中使用它们

我正在尝试使用Request和Cheerio为https://www.freelance.nl/opdrachten/zoeken提供数据,但是我遇到了发布search条件的问题。 在使用该站点时,我无法看到searchstring和所选类别在发送过程中的位置,以及我如何在请求中使用它们来自动执行来自我的节点应用程序的search。 基本上我希望能够发送不同的search条件使用请求,然后我可以刮我返回的HTML数据,我需要的。 到目前为止,我有这样的: request.post('https://www.freelance.nl/opdrachten/zoeken', { form: { key: 'value' } }, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } } ); 但是由于我无法看到表单数据在开发工具中的存储位置,我无法在“表单”对象中发送正确的值。 我很确定它是在请求有效负载,但我怎么从我的节点应用程序? 有没有更简单的方法来做到这一点? 我完全在浪费时间吗?