我使用axios从API获取数据,然后使用我的node.js应用程序中的数据。 数据是300个对象的数组,如下所示:
{
'location': 'us',
'date': '156565665',
'month': '5.1',
'day': '6',
'type': 'default',
'count': '7',
'title': 'good',
'filter': 'no',
'duration': 'short',
'options': 'no',
}
获得这个对象数组后,我需要转换每个对象:用新的替换它的键并将一些值转换为正确的数据类型(string to float):
{
'loc': 'us',
'date_new': parseInt('156565665'),
'month': parseFloat('5.1'),
'day': parseInt('6'),
'type': 'default',
'count': parseInt('7'),
'title': 'good',
'filter': 'no',
'duration': 'short',
'options': 'no',
}
现在我只是使用for循环,并在每次迭代中转换每个对象的键和值。但是会有成千上万个像这样的对象。它将成为处理这些数据的工作者。在node.js中处理它们的最佳方法是什么?
我将使用一些现成的队列,如蜜蜂队列或resque,但即使在这种情况下,最好使代码" node.js方式"这个对象数组的处理不会减慢节点循环。也许用 将每个对象推送到promises数组并将它们放到Promise.all()中(但Promise.all()中会有300个promise)?在node.js中进行这种硬计算的最佳方法是什么?
答案 0 :(得分:2)
但是会有成千上万个像这样的对象。这将是一个 工人处理这些数据。处理它们的最佳方法是什么 在node.js?
我会推荐
示例强>
var request = require('request')
, JSONStream = require('JSONStream')
, es = require('event-stream')
request({url: 'URL'})
.pipe(JSONStream.parse('rows.*'))
.pipe(es.mapSync(function (data) {
console.error(data)
return data
}))
解析后,将它们存储在数据库中,而不是立即处理它们,因为对大型对象的硬计算将阻止Nodej上的处理。
从数据库中逐一挑选它们以进行处理。