私はノードで作業しています。私はIDの配列を持っています。私は他のAPIの呼び出しの応答に基づいてそれらをフィルタリングしたい。だから、私はそれぞれのIDを入力し、私がAPIに基づいてやっているフィルタをアサートするかどうかを知りたい。NodeJS - マップforEach Async/Await
私はasync/awaitを使用しています。私は、Promises.allを使用することが最善の方法だが、これは期待どおりに機能していないことがわかった。私は何を間違っているのですか?
static async processCSGOUsers (groupId, parsedData) {
let steamIdsArr = [];
const usersSteamIds = parsedData.memberList.members.steamID64;
const filteredUsers = await Promise.all(usersSteamIds.map(async (userId) => {
return csGoBackpack(userId).then((response) => {
return response.value > 40;
})
.catch((err) => {
return err;
});
}));
Object.keys(usersSteamIds).forEach(key => {
steamIdsArr.push({
steam_group_id_64: groupId,
steam_id_64: usersSteamIds[key]
});
});
return UsersDao.saveUsers(steamIdsArr);
}
それ以外は、何か変わっています。私がこれをデバッグするとき、このメソッドのデータパラメータはうまくいきます。私がPromise.allのラインに到達するとき、私は各パラメータで "参照エラー"を得ました。私はなぜそうではありません。その後、すべての応答のための
あなたを使用して簡単な方法で何かのこの種を行うことができますどこでも 'filteredUsers'を使用していませんが、もしあなたがそうだったとしても、その変数名に基づいて予想されるように、フィルターされた配列の配列ではなく、ブール値の配列になります。 –
申し訳ありませんが、filteredUsersはObject.keysに移動します(更新するのを忘れてしまいます)。あなたはブール値で正しいですが、私はあまりにもそれを取得していません:/ –
あなたはあなたの質問を編集することができます間違いを修正します。 –