【问题标题】:Listeners not being updated in Firestore未在 Firestore 中更新侦听器
【发布时间】: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


【解决方案1】:

显然它可能是bug,但目前它在我的情况下运行良好。

我创建了一个示例应用程序(您必须在 app.module 中填写 firebase 凭据才能使其正常工作),该应用程序重现了类似于我试图实现的目标:更改“状态”字段并在任何地方进行更新。这是stackblitz

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 2020-01-07
    • 2021-09-25
    • 1970-01-01
    • 2014-08-20
    • 2023-03-19
    • 2020-01-24
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多