【发布时间】:2021-09-22 11:52:31
【问题描述】:
我遇到了一个问题,需要帮助。 我有一个组件等待一些 Firebase/Firestore 数据由如下的路由器解析器解析。
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@Injectable({ providedIn: 'root' })
export class ArticleDataResolver implements Resolve<any> {
constructor(
private angularFirestore: AngularFirestore,
) { }
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any> | Promise<any> | any {
const stateKey = state.url;
const ref = this.angularFirestore.collection("articles");
return ref
.doc(route.params.id)
.get()
.pipe(
map((dataSnap) => {
const articleData = dataSnap.data();
return articleData;
})
);
}
}
在消费组件中,我订阅了解析后的可观察数据,如下所示。
this.activatedRoute.data.subscribe(
(data) => {
console.log(data);
}
);
此代码工作正常,但在使用如下云功能通过 SSR 提供服务时刷新或直接导航到页面时停止工作。
export const ssr = functions.runWith({
timeoutSeconds: 300,
memory: "1GB"
}).https.onRequest((request, response) => {
require(`${process.cwd()}/dist/motif/server`).app(request, response);
});
但即使在页面刷新和直接导航时,相同的代码也适用于我的 Node/Express 服务器。对于本地测试,我使用以下脚本:npm run build:ssr && npm run serve:ssr
我不确定自己做错了什么,因为我没有收到任何错误,但只有云功能超时消息。
【问题讨论】:
标签: angular firebase google-cloud-firestore google-cloud-functions server-side-rendering