I'm making a simple Redis' request which is supposed to return all VALUES (not keys) in my database. The problem is that my function returns tab before the .forEach even starts. Why do I know that? My console.log(tab)'s result is printed before console.log(cards) for each iteration.
My interpreter also tells me inside the .forEach function that "Promise returned from forEach argument is ignored".
What have I done wrong there? Why isn't async/await working inside .forEach?
router.get("/", async (req, res) => {
try {
const keys = await client.keys("*")
//console.log(result)
const tab = []
await keys.forEach(async (key) => {
const cards = await client.smembers(key)
console.log(cards)
tab.push(cards)
})
console.log(tab)
return res.send(tab)
} catch (err) {
console.error(err)
}
});
forEach is not meant to work with async functions. You can use a for ... of loop instead.
for(const key of keys){
const cards = await client.smembers(key)
console.log(cards)
tab.push(cards)
}