Según la documentación:
https://developers.eventstore.com/clients/grpc/reading-events.html#reading-backwards-1
debajo: Verificando si la transmisión existe
const events = client.readStream("user", { direction: FORWARDS, fromRevision: BigInt(10), maxCount: 20, }); try { for await (const resolvedEvent of events) { console.log(resolvedEvent.event?.data); } } catch (error) { if (error instanceof StreamNotFoundError) { return; } throw error; }consigo:
failed to read stream, no exist StreamNotFoundError: user not foundSus tutoriales me parecen obsoletos.
P: ¿Hay alguna manera de verificar si existe una transmisión (y tal vez agregarla si no es así) en la tienda de eventos en 2022?
Edición 2:
después de los intentos, todavía se muestra con la respuesta provista: node:events:505 throw er; // Evento 'error' no manejado ^
StreamNotFoundError: user not found at ReadStream._transform (game\node_modules\@eventstore\db-client\dist\streams\utils\ReadStream.js:50:32)No estoy seguro de lo que tiene en su base de datos, pero rápidamente copié el código de muestra y funciona como se esperaba.
const {EventStoreDBClient, FORWARDS, StreamNotFoundError, START} = require("@eventstore/db-client"); async function main() { const CLOUD_ID = "ca1loplo0aepjgt215o0"; const client = EventStoreDBClient.connectionString`esdb+discover://${CLOUD_ID}.mesdb.eventstore.cloud`; const events = client.readStream("doesntexist", { direction: FORWARDS, fromRevision: START, maxCount: 20, }); try { for await (const resolvedEvent of events) { console.log(resolvedEvent.event?.data); } } catch (error) { if (error instanceof StreamNotFoundError) { console.log("Stream not found"); return; } throw error; } } main().then(() => console.log("done"));Cuando lo ejecuto me sale:
Stream not found doneEl problema aquí parece ser que está tratando de verificar si la transmisión existe después de que ya terminó de llamarse.
Puede ser útil mover client.readStream() dentro de try/catch , esperarlo directamente y luego repetir según sea necesario. Esto al menos reduce el punto en el que va mal y falla antes de que comience el bucle for.
try { // Moved down into try block! const events = await client.readStream("user", { direction: FORWARDS, fromRevision: BigInt(10), maxCount: 20, }); for (const resolvedEvent of events) { console.log(resolvedEvent.event?.data); } ... } catch (error) {...}