[英]Process large json array in node.js
我使用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中進行這樣的硬計算的最佳方法是什么?
但是會有成千上萬個像這樣的對象。 它將成為處理這些數據的工作者。 在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上的處理。
從數據庫中逐個挑選它們以進行處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.