Articles of node.js

Amazon S3 getObject桶策略

我有一个政策在我的桶里宣布: { "Sid": "Policy 1", "Effect": "Allow", "Principal": "*", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<bucket_name>/*", "Condition": { "StringLike": { "aws:Referer": "http://example.com/*" } } } 我声明了一个条件aws:Referer,因为我只想从某个域访问对象。 在我的节点API中,我添加了s3对象作为内部下载的附件。 this.response.attachment(Key) this.body = request(Location, { encoding: null }) 但是,它总是会产生一个“未处理的拒绝状态码错误:403” 。 该文件可以上传到S3存储桶,我可以得到该对象。 这个部分的问题是下载。 我试图删除在政策的条件和下载工作正常。 我的存储桶政策可能是什么问题?

PM2数据采集代理占用太多的networking带宽

最近我们发现PM2 km代理不断上传数据,这个过程需要的networking带宽太大。 有没有人有任何想法呢? 如果我们手动杀死“KM代理”进程,让PM2运行没有这个过程,会有什么影响吗? 有关PM2的networking状态: 相应的过程信息: 我们在/xxx/.pm2目录下的agent.log部分: 2017-07-26 13:25:20: [WARN] Time to send data over TCP took 10.737seconds! 2017-07-26 13:25:20: [WARN] Time to send data over TCP took 9.737seconds! 2017-07-26 13:25:20: [WARN] Time to send data over TCP took 8.737seconds! 2017-07-26 13:25:20: [WARN] Time to send data over TCP took 7.733seconds! 2017-07-26 13:25:20: [WARN] Time […]

Mongodb或mongoose性能问题

我开发了一个用nodeJs / mongodb备份的应用程序,而前端是Angularjs 1.6.5。 应用程序用于提供实时分析,数据每增加一个分钟,数据量就会增加。 随着数据库大小的增加,查询需要花费更长的时间来执行,甚至有时会失败并给出404错误。 (Nginx的服务器)但奇怪的是,每当我运行相同的查询在mongo shell中的.explain('executionStats')方法的服务器,它给予即时响应与执行时间0毫秒。 因此,根据上面的截图,10数据mongo shell的限制,没有时间执行它,但在浏览器中,当我通过节点和mongoose敲db时花了1分钟,但不可能返回结果(也许nginx返回404之后时间) 但是我尝试在mongo shell之后没有设置任何限制,也就是在less于4秒的时间内用6331522logging返回数据。 我不知道究竟是什么问题。 任何帮助将appriciated

Loopback3定期调用远程方法或API

基本上,我的要求是不断寻找文件夹中的新文件,读取文件的内容,并调用回送API。 为了实现这一点,我正在尝试做下面的事情: 我有一个回环的远程方法,需要定期调用,即每隔2分钟。 我在官方的环回文档中阅读了有关asynchronous启动脚本: https : //loopback.io/doc/en/lb2/Defining-boot-scripts#synchronous-and-asynchronous-boot-scripts到目前为止,我已经能够写下面的代码: module.exports = function(app, callback) { setInterval(function() { console.log('Hello world'); callback(); }, 120000); }; 但是这会在下面引发一个错误。 error: uncaughtException: listen EADDRINUSE :::443 另外,有没有办法从启动脚本调用远程方法? loopback是否支持cron / schedular或轮询function。 我是否需要编写一个单独的nodejs应用程序来定期调用API。 谢谢

res.render()不在nodejs中调用

我正在使用nodejs + ansible模块。 当我需要通过nodejs调用安全的脚本时,在完成了可接受的taks之后,然后渲染结果并在前端查看。 现在,完美的任务工作正常,但没有得到可靠的结果,并在前端查看。 它不叫res.render方法。 它去中止 我的代码: app.post('/create', function (req, res) { var playbook = new Ansible.Playbook().playbook("remove") var command = playbook.inventory('inventories/Remove/hosts').verbose('v'); var promise = command.exec(); promise.then(function (successResult) { tmp += "Delete Magento Process"; tmp += successResult.output; installMagento(req, res); }, function (error) { tmp += error; installMagento(req, res); }); }); function installMagento(req, res) { var […]

vueify + node:编译单独的.vue文件

是否有可能以这种方式设置vueify,所以它编译单个.vue文件到相应的.js文件? 例如: input: my-component.vue <template> <div>{{ message }}</div> </template> <script> module.exports = { data() { return { message: 'Hello World', }; }, }; </script> 输出: my-component.js Vue.component('my-component', { template: '<div>{{ message }}</div>', data() { return { message: 'Hello World', }; }, });

根据查询参数过滤mongodblogging

我在Express.js中编写一个REST API来从mongo数据库中检索一些logging。 为了获得一组logging,我使用了一个标准的GET请求: GET localhost:3000/api/books 现在要实现filter,我使用了express-api-queryhandler 。 代码如下所示: routes.use(queryHandler.filter()); […] .get((req: any, res: Response) => { Book.find(req.where, req.fields, req.options, (err: any, orders: any) => { res.status(200).json(books); }); }); 所以现在当我想要检索一个特定的元素,我可以写如: GET localhost:3000/api/books?name=Harry%20Potter 但是,实施(高于/低于)GT,GTE,LT,LTEfunction的最佳方式是什么? Node.js有没有好的库? 我只在Loopback文档中find了where函数,但是可以使用Loopback和Express吗? 我可以手动编写所有东西,但这不是一个好的解决scheme。 提前致谢。 编辑:我编辑了前面提到的包中的filter.js文件,以便它可以与gt,lt,gte,lte一起使用。 它看起来很安全,但也许有更多的validation更好的select? function filter (query, skip) { var filters = {}; var k; var SKIP_KEYS = [ 'fields', 'limit', […]

如何使用mysql和nodejs获取复杂的对象?

如何检索MySQL和节点js中的对象? 列表表格: id , name , create … 产品表: id , list_id , name , price … Product_metadata表: id , product_id , name , isshipping … 我想从表中得到这个对象: { lists: [{ id: 1, name: 'my list of my products', created: 'today', products:[{ name: 'my product', price: '$1', metadata: { name: 'some metaname', isshipping: true }, …. […]

使用mongoose 4.11.0进行组查询

我想用最后一个版本的mongoose做一个例子: Patient.group({gender:true}) .then((result)=>{ console.log(result); }); 病人是模型,你知道这是怎么回事?

在NodeJS中stream到MongoDB

我使用模块streamToMongoDB的node.js从Web APIstream到MongoDB。 var streamToMongoDB = require("stream-to-mongo-db").streamToMongoDB; var JSONStream = require("JSONStream"); var request = require("request"); var fs = require("fs"); // where the data will end up var outputDBConfig = { dbURL : "mongodb://user:password@0.0.0.0/test", collection : "temperature" }; // create the writable stream var writableStream = streamToMongoDB(outputDBConfig); // create readable stream and consume it request("http://0.0.0.0:8081/getTemp") .pipe(JSONStream.parse('*')) .pipe(writableStream); […]