Почему я не могу запросить Firebase, даже если запрос правильный? - PullRequest
0 голосов
/ 11 апреля 2020

Я вчера написал о той же проблеме, что и у меня, но я просто не могу заставить ее работать. Мне действительно нужна помощь в этом больше, чем когда-либо!

Я опубликую всю функцию ниже:

const db = firebase.firestore; //initializing database
//setting state here, removed for brevity
_checkForUniqueDevice() {
    const { currentUser } = firebase.auth();
    this.state.currentUser = currentUser;

    const document = db().collection('RriNshpiUsers').doc('EzGNfNl63LQvjdauFWosG08Ishj2');
    const ref = document.collection('private').doc('ApbckRkRITeh0WQIiQiz');
    const publicDoc = document.collection('public').doc('aRzHZ8zro7XFpkJMg1TH');

    const updateFunction = async transaction => {
        const [active] = await Promise.all([
            transaction.get(ref),
        ]);
        const { location } = this.state;
        let timestamp = moment(location.timestamp).format("MM-DD-YYYY h:mm:ss")

        const user_active = active.data().act;
        const device_id = active.data().devID;

        if (user_active === 0 && device_id === '') {
            transaction.update(ref, {
                devID: this.state.deviceId,
                act: 1,
                time: timestamp,
                lat: location.latitude,
                course: location.course,
                speed: location.speed,
                alt: location.altitude,
                long: location.longitude,
                acc: location.accuracy,
                altAcc: location.altitudeAccuracy,
                courseAcc: location.courseAccuracy,
                speedAcc: location.speedAccuracy
            });
                transaction.update(publicDoc, {
                addCoord: location
            });
        }
    };
     db().runTransaction(updateFunction)
        .then(result => {
          //never returns something
        })
        .catch(error => {
            //never catches any errors
        });
}

Я использую эту функцию, которую я использовал где-то еще, где она работала совершенно нормально, но я не могу понять, почему она молча терпит неудачу здесь?

Когда я вызываю эту функцию, она выполняет первую строку, в которой строит запрос, затем переходит к db().runTransaction(updateFunction) этой строке и пытается выполнить, но не обнаруживает никаких ошибок и ничего не возвращает в обратном вызове - Я установил точки останова в обратных вызовах .catch и .then, но никогда не останавливался на этом.

Если есть ошибка, не стоит ли ее отлавливать? Или, если это удастся, не должно ли что-то возвращать в обратном вызове?

Есть идеи, что здесь происходит?

РЕДАКТИРОВАТЬ: скриншоты

enter image description here

enter image description here

1 Ответ

0 голосов
/ 12 апреля 2020

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

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