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
doesn't return a promise which is why you're getting that warning. – Shakemap
orreduce
. Maybe create an array of promises and awaitPromise.all
instead. – Shake