Angular Universal+AngularFire服务器由于first()管道而挂起



我正在构建一个需要SSR的angular/firestore应用程序。我添加了angular universal,一切都很好,直到我在任何firestore调用上使用第一个((管道,然后服务器就挂起了。我需要第一个管道,因为在我的两个调用中使用路由解析器时,我依赖它。这是我的代码示例:

服务:

return this.db
.collection("posts", (ref) => ref.where("featured", "==", true))
.snapshotChanges()
.pipe(
first(),
map((snaps) => this.convertSnaps<Post>(snaps)),
catchError((val) => of(val))
);

解析程序:

export class FeaturedResolver implements Resolve<Post[]> {
constructor(private postsService: PostsService) {}
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<Post[]> {
return this.postsService.featuredPosts();
}
}

归属路由:

{
path: "",
component: HomeComponent,
resolve: {
featuredPosts: FeaturedResolver,
},
},

组件:

ngOnInit(): void {
this.posts = this.route.snapshot.data["featuredPosts"];
}

package.json:

"@angular/fire": "^6.0.0",
"firebase": "^7.14.2",

有人知道这是怎么回事吗?

是的,这与这里的问题相同。

当您将.where((查询与take(1(或first((一起使用时,通常会发生这种情况。希望解决方案正在进行中。

最新更新