我想使用wolkenkit的事件存储,并试图建立一个快速的例子。但我不能简单地输出事件流。
简化示例:
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返回一个可读的流。我遵循了这的指令,但它并没有像预期的那样工作。我只得到以下错误:
(node:10988) UnhandledPromiseRejectionWarning: TypeError: readableStream.pipe is not a function发布于 2019-04-17 17:16:25
根据wolkenkit文件-事件商店,getUnpublishedEventStream是一个async函数,也就是说,您必须用await调用它。否则,您不会得到流返回,而是一个承诺(并且承诺没有一个pipe函数)。
所以,这条线
const readableStream = eventstore.getUnpublishedEventStream();应:
const readableStream = await eventstore.getUnpublishedEventStream();除了这一点之外,我还没有仔细查看您的代码,但这就是您获得当前错误消息的原因。
PS:请注意我是wolkenkit的核心开发者之一,所以请接受我的回答。
https://stackoverflow.com/questions/55729081
复制相似问题