gpt4 book ai didi

javascript - 通过 javascript 循环将文档添加到 ElasticSearch 索引不起作用

转载 作者:行者123 更新时间:2023-11-30 16:51:28 24 4
gpt4 key购买 nike

我从我的 PostgreSQL 数据库中检索了很多行(存储在 result.rows 中),我想将它们添加到我的 ElasticSearch 索引中。

只添加一个文档工作正常:

var r = result.rows[0];
esClient.index({
index: 'families',
type: 'families',
id: r.family_accession,
body: {
'family_accession' : r.family_accession,
'count_seq' : r.count_seq,
'count_taxon' : r.count_taxon
}
}, function (error, response) {
console.log(error);
});

但是当我尝试将它调用到循环中时,它根本不起作用:

result.rows.forEach(function (r) {
esClient.index({
index: 'families',
type: 'families',
id: r.family_accession,
body: {
'family_accession' : r.family_accession,
'count_seq' : r.count_seq,
'count_taxon' : r.count_taxon
}
}, function (error, response) {
console.log(error);
});
});

最佳答案

由于您在循环中调用一段异步代码,调用 esClient.index() 函数时存在的上下文在您的回调执行时不再存在。

您需要将它包含在闭包中以保持执行上下文。

result.rows.forEach(function (r) {
(function( row ) {
esClient.index({
index: 'families',
type: 'families',
id: row.family_accession,
body: {
'family_accession' : row.family_accession,
'count_seq' : row.count_seq,
'count_taxon' : row.count_taxon
}
}, function (error, response) {
console.log(error);
});
})( r );
});

关于javascript - 通过 javascript 循环将文档添加到 ElasticSearch 索引不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com