0
배열을 반복하고 데이터베이스에 데이터를 쓰려고합니다. 아래 코드는 for 루프를 사용하여 비동기 방식으로 수행하는 방법을 보여줍니다. 나는 이것이 이것을하는 선호되는 방법이 아니라는 것을 안다.node.js의 aysnc 모듈을 사용하여 두 개의 배열을 반복하는 방법
for(var x = 0;x < tt.matches.length;x++) //Match each player with a match and a playerId from the tournament tree
{
if(tt.matches[x].p[0] !== -1)
{
var tmId = JSON.stringify(tt.matches[x].id);
Player.update({ _id : grUpd.players[y] },{ tournamentMatchId : tmId, treeId : tt.matches[x].p[0], opponent : tt.matches[x].p[1] },{ safe : true }, function (err) {
if(err)
{
console.log(err);
}
});
y++;
}
if(tt.matches[x].p[0] === -1)
{
byes++;
}
if(tt.matches[x].p[1] !== -1)
{
var tmId = JSON.stringify(tt.matches[x].id);
Player.update({ _id : grUpd.players[y] },{ tournamentMatchId : tmId, treeId : tt.matches[x].p[1], opponent : tt.matches[x].p[0] },{ safe : true }, function (err) {
if(err)
{
console.log(err);
}
});
y++;
}
if(tt.matches[x].p[1] === -1)
{
byes++;
}
}
다음은 '전통적 방식'으로 다시 표시해야합니다.
for(var x = 0;x < plyrs.length;x++)
{
var nextMatch = JSON.stringify(tt.upcoming(plyrs[x].treeId)) ;
Player.update({ _id : plyrs[x]._id },{ tournamentMatchId : nextMatch },{ safe : true }, function (err) {
if(err)
{
console.log(err);
}
});
}
어떻게 이미 잘못하고 있니? –
두 번째 데이터베이스 쓰기 집합을 수행하기 전에 모든 데이터베이스 쓰기가 완료되었는지 확인해야합니다. 내가 게시 한 방법으로는 첫 번째 쓰기 작업이 완료되지 않았습니다. –
을 https://github.com/caolan/async에서 살펴보고 더 깨끗하게 만들어야합니다. – supernova