【发布时间】:2013-04-22 14:56:36
【问题描述】:
这是我对 Stack Overflow 的第一个问题,但过去 2 年我一直在使用 SO,它提供了丰富的信息。
我最近学习了 NodeJS,但我遇到了一个难题。我正在尝试找出使用 NodeJS 加载/插入大约 2000 行数据的最佳方法,如果可能的话,使用首选的 Async 方法。我必须从 API 中获取数据,然后获取 JSON 数据并将数据加载到 3 个表中,以便以后可以使用这些数据。该文件有 17 个 Country 对象,然后是 77 个 State 对象和大约 2000 个 Counties 对象。
我正在解析的 JSON 文件格式是:
[{Country:{
Name: ...
CountryId: ...
States: {
Name: ...
StateId: ...
Counties: {
Name: ...
CountyId:...
}
}
},{Country+n:{
Name: ...
CountryId: ...
States: {
Name: ...
StateId: ...
Counties: {
Name: ...
CountyId:...
}
}
}];
因此,使用我的 PHP 背景,我会立即在 JavaScript 中创建三个这样的函数:
function Country(data){
for(var z in data){
var country = data[z];
InsertInCountryDB(country.CountryId, country.Name);
State(Country.State);
}
}
function State(data){
for(var z in data){
var state = data[z];
InsertInStateDB(state.StateId, state.Name);
State(Country.State);
}
}
function County(data){
for(var z in data){
var county = data[z];
InsertInCountyDB(county.CountyId, county.Name);
}
}
我的第一次尝试是为每个对象创建一个事件,然后使用这些事件深入到对象内部,然后插入数据。我发现它可以很好地将国家和州的详细信息插入数据库,但是使用县数据,它会出错。
我不是在寻找我的问题的答案,而是在寻找帮助我摆脱三个同步功能而使用异步功能的编码技巧。
谢谢
【问题讨论】:
-
哪个数据库?你试过什么?事件发射器?回调?
-
2000 行应该非常快。我编写了脚本以将 7 百万条记录从多个文件插入到 mongo,而异步中没有问题。那你用什么数据库?
-
我正在使用 postgres 数据库。我使用了 EventEmitters,但今天早上我想我可能错过了我最初应该使用监听器和事件的方式。我设法使用同步方法将所有数据输入系统。但是NodeJS的重点是异步编程,所以我想看看我是否可以重写代码以使用更好的方法。
标签: json node.js postgresql asynchronous