Firestore 中的更新导致无限循环



我目前正在尝试使用 Angular 4 在 Firestore 中设置一个计数器,每当人们单击特定按钮时就会更新。单击该按钮确实会更新计数器,但它会启动无限循环。停止它的唯一方法是注释掉无济于事的行,因为每次我决定单击该按钮时都需要更新计数器。这是代码。

addFoodToCart(uid: string, email: string, item: Goods)
  {
    this.getUserInDB(email).doc(uid).valueChanges().subscribe(a =>
    {
      this.getUserInDB(email).doc(uid).collection('cart').add(item);
      this.getUserInDB(email).doc(uid).update({'food': ++a['food'], 'technology': 0, 'email': email});
    });
  }

如您所见,我也在向同一数据库添加一个项目,但我也将该部分注释掉了,它仍然会导致数据库中的无限循环。发生这种情况的任何原因以及如何解决它?我也使用谷歌浏览器作为我的网络浏览器进行开发。不知道这是否有区别

我很难对此进行测试,但您可以添加 take() 运算符以在单个返回值后取消连接订阅:

addFoodToCart(uid: string, email: string, item: Goods)
{
    this.getUserInDB(email).doc(uid).valueChanges().take(1).subscribe(a =>
    {
        this.getUserInDB(email).doc(uid).collection('cart').add(item);
        this.getUserInDB(email).doc(uid).update({'food': ++a['food'], 'technology': 0, 'email': email});
    });
}

假设您有此文档的较长订阅连接到其他地方,则更新应自动反映。

请注意,根据应用的功能,您可能需要等待这些调用(或以其他方式处理承诺)

最新更新