Можно ли проверить, обнаружил ли onSnapshot () изменения перед тем, как начать выборку? - PullRequest
1 голос
/ 31 января 2020

Когда я перехожу на страницу, я передаю некоторые параметры, такие как " Скидки ", и я показываю этот номер в render(), но я звоню onSnapshot() в самом начале перейти к этому классу. Теперь я хотел бы отобразить ТОЛЬКО значение параметра в начале, и в случае, если есть изменения, извлеките его.

PS причина этого в том, что я пытаюсь уменьшить количество выборок до возможно.

 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 голосов
/ 31 января 2020

Чтобы знать, что что-то изменилось в данных на сервере, сервер должен будет сообщить клиенту об этом изменении. В случае Firestore сервер всегда сообщает клиенту все новое состояние документа.

Таким образом, единственный способ уменьшить объем данных, отправляемых сервером клиенту, - это уменьшить размер прослушиваемого документа.

Но тогда это не уменьшит количество выборок, поскольку серверу нужно будет прочитать документ, чтобы узнать, что он изменился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...