升级到 NestJS v8 后,我还必须将 RxJS 版本从 6 升级到 7,然后它开始抛出ERROR [ExceptionsHandler] no elements in sequence错误。
这是应用程序服务之一中的示例方法:
show(): Observable<any> {
return from(this.repository.fetch()).pipe(
filter((data) => data.length > 0),
map((data) => data.map((datum) => parseData(datum)),
);
}
Run Code Online (Sandbox Code Playgroud)
虽然我有 NestJS v7 和 RxJS v6,但该方法运行得很好;换句话说,如果filter操作没有通过,则map根本不会调用操作符,并且 Observable 会停在那里。
但是升级到 NestJS v8 和 RxJS v7 后,如果我的存储库没有返回任何数据,应用程序就会开始抛出ERROR [ExceptionsHandler] no elements in sequence错误。
我想出的解决方法如下:
show(): Observable<any> {
return from(this.repository.fetch()).pipe(
filter((data) => data.length > 0),
defaultIfEmpty([]),
map((data) => data.map((datum) => parseData(datum)),
);
}
Run Code Online (Sandbox Code Playgroud)
这样错误就消失了,但我还有两个问题: …