【发布时间】:2022-01-07 10:35:57
【问题描述】:
我在订阅一个名为workReports 的子集合中添加文档。
查询方法:
getWorkReportsByProjectId(projectId: string): Observable<ProjectWorkReport[]> {
return this.db
.collection("projects")
.doc(projectId)
.collection<ProjectWorkReport>(
"workReports",
ref => ref.where("invalid", "==", false).orderBy("createdAt", "desc")
)
.valueChanges({ idField: "id" });
}
创建方法(通知createdAt):
createProjectWorkReport(projectId: string, workReport: ProjectWorkReport): Promise<DocumentReference> {
return this.db
.collection("projects")
.doc(projectId)
.collection<ProjectWorkReport>("workReports")
.add({ ...workReport, createdAt: firebase.firestore.FieldValue.serverTimestamp() });
}
我的订阅(我只记录结果):
this.projectsService.getWorkReportsByProjectId(projectId)
.pipe(takeUntil(this.destroyed$))
.subscribe((reports) => {
console.log(reports);
});
这是正在记录的内容。由于orderBy("createdAt", "desc"),位置0处的元素是新元素,但它的createAt属性为null,但如果在DB上进行更改或再次进行查询,新结果通常具有createdAt(和@987654331 @ 在新的,如果我再创造一个)。
我的猜测是,Firestore 独立于文档的创建考虑了时间戳标记,并且订阅在时间戳设置之前触发。
我做错了吗?如果我的猜测是正确的,我能做些什么来解决?
【问题讨论】:
标签: angular google-cloud-firestore rxjs angularfire