Firestore обновляет только запросы с .where обновляет все - PullRequest
0 голосов
/ 30 марта 2020

Этот код работает для обновления всех записей в MyCollection (MyBleeding) в firestore, которые имеют selectedDate, а не те, которые имеют «-». Я хочу обновить только те, которые имеют "-". Некоторые даты имеют «-», а другие имеют, например, «2020-03-29». Когда я использую этот код, он обновляет все даты до текущей, если у них есть другая дата или «-». Почему не выполняется запрос условия с помощью .where, а затем обновляются только те из них, которые соответствуют этому условию? структура базы данных firestore с "-" структура базы данных firestore с датой

  onPress() {
        this.setState({
            isLoading: true,
        });
        const userId = firebase.auth().currentUser.uid;
        const updateRef = firebase.firestore()
            .collection('users')
            .doc(userId)
            .collection('MyBleeding')
            .where('selectedDate', '==', '-');
        updateRef.get().then(function (querySnapshot) {
            querySnapshot.forEach(function (doc) {
                if (doc.exists) {
                    let newRef = updateRef.doc(doc.id);
                    return newRef.update({
                        selectedDate: new Date().toLocaleDateString()
                    });
                } else {
                    console.log("No such document!");
                }
            });
        })
    }

Заранее спасибо!

ОБНОВЛЕНИЕ: на основе исправления от @EmilGi, правильный код, который работает сейчас:

onEndPress() {
        this.setState({
            isLoading: true,
        });
        const userId = firebase.auth().currentUser.uid;
        const updateRef = firebase.firestore()
            .collection('users')
            .doc(userId)
            .collection('MyBleeding')
            .where('selectedDate', '==', '-');
        updateRef.get().then(function (querySnapshot) {
            querySnapshot.forEach(function (doc) {
                if (doc.exists) {
                    let newRef = firebase.firestore()
                        .collection('users')
                        .doc(userId)
                        .collection('MyBleeding')
                        .doc(doc.id);
                    return newRef.update({
                        selectedDate: new Date().toLocaleDateString()
                    });
                } else {
                    console.log("No such document!");
                }
            })
                .then((docRef) => {
                    this.setState({
                       selectedDate: '',
                        isLoading: false,
                    });
                })
            .catch((error) => {
                    console.error("Error adding document: ", error);
                    this.setState({
                        isLoading: false,
                    });
                });
        })
    }
...