我正在使用 pelias 项目并使用包 wof-admin-lookup 来处理从文件中读取的数据。
有一种情况,没有有效的数据可以推送到流中。wof-admin-lookup 永远不会结束。
这是我的代码:
const stream = recordStream.create(filePath)
.pipe(blacklistStream())
.pipe(adminLookup.create())
.pipe(model.createDocumentMapperStream())
.pipe(peliasDbclient())
stream
.on('data', data => {
count++
})
.on('finish', () => {
console.log(`Imported ${count} addresses`)
resolve()
})
.on('error', (e) => {
reject(e)
})
这是 wof-admin-lookup 中的代码:
module.exports = function(pipResolver, config) {
if (!pipResolver) {
throw new Error('valid pipResolver required to be passed in as the first parameter');
}
// pelias 'imports.adminLookup' config section
config = config || {};
const pipResolverStream = createPipResolverStream(pipResolver, config);
const end = createPipResolverEnd(pipResolver);
const stream = parallelTransform(config.maxConcurrentReqs || 1, pipResolverStream);
stream.on('end', end);
return stream;
};
尽管控制台记录了“导入的 0 地址”,但如果我不通过 Ctrl+C 手动关闭它,pipResolverStream 将永远存在。
更新,这种情况只有在没有数据通过流传递时才会发生。