Как проверить, существует ли документ на SET и WHERE - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь обновить денормализованную структуру БД в PITA. Я знаю, что уже есть ответы на вопросы о том, как проверить, существует ли документ в документации, даже достаточно ясно об этом, но я просто не могу найти что-нибудь, что бы проверить, существует ли документ при обновлении «set» и «where».

Первый Я хочу проверить один документ, если он существует, перед обновлением

 const staffRef = db.collection("staff").doc(uid)

    return staffRef.set({
        employeeProfile: employeeProfile
    }, {
            merge: true
        })...

Есть ли способ проверить, существует ли этот документ на съемочной площадке, или я должен сначала прочитать его, чтобы узнать, существует ли этот документ, как этот

    const staffRef = db.collection("staff").doc(uid)
    return staffRef.get()
        .then((doc) => {
            if (doc.exists) {
                return staffRef.set({
                    employeeProfile: employeeProfile
                }, {...

Второй Я хочу проверить несколько документов, где

const staffRef = db.collection("staff").where("employerId", "==", uid)
    const batch = db.batch()

    return staffRef.get()
        .then((querySnapshot) => {
            querySnapshot.forEach((doc) => {
                batch.update(doc.ref, { employerProfile: employerProfile })
            })...

Должен ли я читать каждый документ после forEach, если он существует?

1 Ответ

0 голосов
/ 28 апреля 2019

Первый ответ: Да, для одного документа сначала необходимо использовать метод get(), чтобы выяснить, существует ли этот документ.

Для DocumentSnapshot, который указывает на несуществующий документ, любой доступ к данным вернет «неопределенное».Вы можете использовать свойство exists для явной проверки существования документа.

Второй ответ: Нет, в случае результатов Query, вам не нужно проверять каждый документ: каждый doc, полученный с помощью цикла querySnapshot.forEach(), существует.

A QuerySnapshot содержит ноль или болееDocumentSnapshot объекты, представляющие результаты запроса.

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