В следующем маршруте я хочу получить количество ключей, удаленных из redis, используя метод ioredis 'scanStream
.Если я закодирую его следующим образом, я всегда получу { len: null }
в ответе, потому что оператор return не ждет завершения stream.on
.Я вырываю волосы, но не могу найти решение.Совет?
{
route: '/some/path/{somekey}',
handler: (request, h) => {
// redis is an ioredis instance
const { redis, params } = request
const stream = redis.scanStream({
match: `someprefix:${params.somekey}-*`
})
let len = null
stream.on('data', async keys => {
len = keys.length
console.log(`removing ${keys}`)
if (len > 0) {
const pipeline = client.pipeline()
keys.forEach(key => pipeline.del(key))
await pipeline.exec()
}
})
return { len }
}
}