Как проверить, что запрос Firestore пуст или документ, который я пытаюсь получить, не существует? - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь получить документ в Cloud Firestore на основе идентификатора поля, но этот идентификатор не может быть найден, как это проверить, потому что он выдает ошибку?

    getMenu = () => {
    try {
        this.setState({
            loading_menu: true
        })

        var ref = firebase.firestore().collection('restaurants_menu')
            .where("rest_id", "==", this.getSelected.rest_id)
            .limit(this.state.limit_menu)

        ref.onSnapshot((querySnapshot => {
            var menu = querySnapshot.docs.map(doc => { return { ...doc.data(), id: doc.id } });
            var lastVisibleMenu = menu[menu.length - 1].rest_id;
            this.setState({
                menu: menu,
                lastVisibleMenu: lastVisibleMenu,
                loading_menu: false,
            });
        }));
    }
    catch (error) {
        console.log("SOMETHING HAPPENED, WE COULD NOT FETCH restaurants_menu:  ", error);
    }
}

1 Ответ

2 голосов
/ 31 января 2020

Если ваш обработчик снимков вызывается, ошибки не было. Просто проверьте длину массива querySnapshot.docs, чтобы узнать, сколько документов соответствует запросу. Совпадение с 0 документами не является ошибкой - вы должны ожидать, что это может иметь место.

Если вы хотите обработать возможные ошибки, вы должны передать более одного обработчика снимка. Документация для onSnapshot () предполагает, что вы должны передать один объект-наблюдатель с различными свойствами для каждого типа функции-обработчика.

ref.onSnapshot({
    next: snapshot => {
        // your snapshot handler code
    },
    error: error => {
        // your error handling code
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...