Проверьте, возвращает ли запрос Cloud Firestore что-то - PullRequest
0 голосов
/ 05 февраля 2019

Допустим, мой Cloud Firestore выглядит следующим образом:

users
  ├────random_id_1───{name, email, ...}
  ├────random_id_2───{name, email, ...}
 ...
  └────random_id_n───{name, email, ...}

Я создал CollectionReference:

var collectionReference = db.collection("users");

Затем я создал Query:

var query = collectionReference.where("name", "==", "John");

Моя цель - проверить, находит ли запрос что-то или нет , я просто хочу этот ответ (чтобы я мог использовать его в операторе if-else).

Если возможноЯ не хочу использовать этот подход, даже если он работает:

query.get().then(function(querySnapshot) {
    if (querySnapshot.empty) {
        console.log('no documents found');
    } else {
        // do something with the data
    }
});

Слишком много кода, чтобы дать простое логическое значение для запроса.

1 Ответ

0 голосов
/ 05 февраля 2019

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

Единственное, о чем я могу думать, это если вы насреда, которая поддерживает async / await, и в этом случае вы можете сделать это:

let querySnapshot = await query.get();
if (querySnapshot.empty) {
    console.log('no documents found');
} else {
    // do something with the data
}

Возможно, вы даже могли бы сжать первые две строки в:

if ((await query.get()).empty) {
  ...

Я нехотя этот последний шанс мне очень нравится.Сокрытие такой сложности всегда приводит к тому, что в какой-то момент эта абстракция становится дырявой.

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