是否可以在实际获取之前检查onSnapshot()是否已找到更改?

时间:2020-01-31 17:58:40

标签: javascript reactjs firebase react-native google-cloud-firestore

导航到页面时,我传递了一些参数,例如“ Discounts ”,并在render()中显示该数字,但我正在呼叫onSnapshot()在导航到该类的开始。现在,我只想在开始时显示参数的值,以防万一有变化获取它。

P.S。其背后的原因是我试图尽可能减少获取的次数。

 check_amount_left() {
    const getSelected = this.props.navigation.state.params;
    var ref = db().collection('discounts').where("rest_id", "==", getSelected.rest_id)
    ref.onSnapshot((querySnapshot => {
        var amount = querySnapshot.docs.map(doc => doc.data().amount);
        this.setState({
            check_for_amount: amount.toString()
        });
    }));
}

渲染方法:

render(){
  const getSelected = this.props.navigation.state.params;
   return(
     <View>
       {getSelected.amount}
     </View>
   )
}

1 个答案:

答案 0 :(得分:0)

要知道服务器上的数据已发生某些更改,服务器将需要告知客户端该更改。在Firestore的情况下,服务器始终告知客户端文档的整个新状态。

因此,减少服务器发送给客户端的数据量的唯一方法是减小您正在收听的文档的大小。

但是,那样的话,它不会减少获取的次数,因为服务器将需要阅读文档以了解文档已更改。