我想使用wolkenkit的eventstore,并试图建立一个简单的例子。但是我不能简单地输出事件流。
简化示例:
const eventstore = require("wolkenkit-eventstore/inmemory");
const Stream = require("stream");
const uuidv4 = require("uuid/v4");
const Event = require("commands-events/dist/Event");
const main = async () => {
await eventstore.initialize();
const aggregateId = uuidv4();
const event = new Event({ ... });
event.metadata.revision = 1;
await eventstore.saveEvents({ events: event });
const writableStream = new Stream.Writable();
writableStream._write = (chunk, encoding, next) => {
console.log(chunk.toString());
next()
};
const readableStream = eventstore.getUnpublishedEventStream();
readableStream.pipe(writableStream);
};
main();
据我了解, getUnpublishedEventStream 返回可读的流。我遵循了this的说明,但是没有按预期运行。 我得到的只是以下错误:
(node:10988) UnhandledPromiseRejectionWarning: TypeError: readableStream.pipe is not a function
答案 0 :(得分:0)
根据documentation of wolkenkit-eventstore,getUnpublishedEventStream
是async
函数,即您必须使用await
对其进行调用。否则,您将无法获得返回的信息流,而是一个承诺(并且一个承诺没有pipe
函数)。
所以,这一行
const readableStream = eventstore.getUnpublishedEventStream();
应为:
const readableStream = await eventstore.getUnpublishedEventStream();
除此之外,我没有仔细研究您的代码,但这就是为什么您会收到当前错误消息的原因。
PS:请注意,我是wolkenkit的核心开发人员之一,因此请一言以蔽之。