Итак, я просматриваю массив с именем candidates
и выполняю определенные задачи, используя каждый элемент массива, а затем в конце нажимаю результаты на Firebase candfb
. Вот код:Async Parallel duplicate entries
var candidates = json.stageCandidates.candidate;
var list = [];
for (var i = 0; i < 20; i++) {
var candidate = [];
var id = candidates[i].candidateId;
async.parallel([
function(callback) {
votesmart.getDetailedBio(id, function(err, json) {
if (!err && json.bio != undefined)
candidate.bio = json.bio;
callback();
});
},
function(callback) {
votesmart.getAddress(id, function(err, json) {
if (!err && json.address != undefined)
candidate.address = json.address.office[0];
callback();
});
},
function(callback) {
votesmart.getRating(id, function(err, json) {
if (!err && json.candidateRating != undefined)
candidate.ratings = json.candidateRating;
callback();
});
},
function(callback) {
votesmart.getVotes(id, function(err, json) {
if (!err && json.bills != undefined)
candidate.votes = json.bills;
callback();
})
},
function(callback) {
votesmart.getStances(id, function(err, json) {
if (!err && json.npat != undefined)
candidate.stances = json.npat;
callback();
})
}
], function() {
candfb.push(candidate);
// res.send(candidate);
})
};
Теперь проблема заключается в том, что даже если есть ровно 20 пункты толкают (жестко вписан в петле) есть дубликаты некоторых пунктов и некоторые из них пропуска. Некоторые предметы могут быть уникальными, в то время как другие могут иметь до 3 копий, которые будут помещены в Firebase. Я также проверил, и массив candidates
не имеет дубликатов.
Я подозреваю, что это может быть связано с использованием async.parallel()
, но я не уверен, что сменить, чтобы заставить его работать.
Большое вам спасибо! –