【发布时间】:2018-04-06 08:07:23
【问题描述】:
我正在尝试新的 Firestore。我有一个实时数据库运行良好的系统,但允许 Firestore 的新功能在发布之前从 Realtime 切换到 Firestore。我设法迁移了大部分内容,但由于侦听器不侦听新更改,并且数据库中接收到更改需要更长的时间,因此出现错误。
已编辑
示例:我发表了一篇文章,这篇文章需要在发表前进行审核,所以它在一个文档的“articlesUser”集合中,字段为“status”,值为“pending”。当我作为管理员发布文章时,状态从“待定”变为“已批准”。发生的情况是,如果我点击编辑,这个新视图的状态仍然是“待定”。
示例代码:
getAllByUser(uid, limitToLast): Observable<any> {
const items$ = this.afs.collection(`countries/${this.countryDbName}/articlesUser/${uid}`, ref =>
ref.orderBy('createdAt').limit(limitToLast)).valueChanges();
...
其中“this.afs”是 AngularFirestore 的一个实例。稍后的项目使用 Ngrx Store 存储在状态中。
当我更新articlesUser 时,我会更新其他表,因此我使用“set”方法进行批处理(来自 Firebase 函数):
const batch = dbs.batch();
batch.set(dbs.collection(`countries/${country}/articlesUser/${uid}`).doc(article.key), listing);
...
我只允许在状态为 Accepted 时点击 EDIT 按钮,但是当我点击它并进入 Edit View 时,这次加载的“文档”仍然处于“待处理”状态。所以它在视图中具有“已接受”状态,因为它让我点击编辑,但在新视图中仍然具有“待定”状态。
是否需要“向所有侦听器推送通知”功能或使用 Firestore 的功能?
【问题讨论】:
-
您可以填写更多信息吗?,显示一点代码,您检索文档的位置
-
嗨迭戈。您是否可以尝试创建一个小示例来说明您尝试使用 stackblitz 完成的工作?这是官方 angularfire2 stackblitz 模板的链接:stackblitz.com/edit/angular-1iment 有了这个,我很乐意查看代码,看看是否可以提供帮助:)
标签: firebase angularfire2 google-cloud-firestore