在通过AngularFireDatabase向Firebase添加新项目之前检查项目数

时间:2018-03-29 09:33:13

标签: ionic-framework observable angularfire2

我正在编写一个向Firebase添加记录(引用)的函数,但我想将记录数限制为3.函数如下所示:

addQuote(q) {

   this.angularFireDatabase.list(this.getUserPath('/savedQuoteList')).valueChanges().subscribe( data => {
     console.log("Length = "+data.length);

     if(data.length<3){
       this.angularFireDatabase.list(this.getUserPath('/savedQuoteList')).push(q);
       console.log("Quote saved.");
     } else {
       console.log("Too many quotes in list.");
     }
  });

}

当列表长度为3时,该函数表明列表中的引号太多,这是预期的行为。但是,如果我现在在Firebase上手动删除一些记录,那么该函数会添加我之前未能添加的记录,直到列表长度为3(在某些情况下甚至为4)。

我知道这一定是因为我订阅了这个列表,因此正在收听它。我已经尝试将.unsubscribe()添加到结尾,但之后根本没有添加记录。我怎样才能让它发挥作用?或者,有更简单的方法吗?

我知道这应该是直截了当的,但我还不熟悉可观测量,所以我需要一些帮助。非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用firebase本机方法来检查列表

首先 FutureOr<Null> Function(Listing) onSubmittedCallback) async { await Navigator .of(context) ...

import * as firebase from 'firebase';