Реагировать на родную базу огня.После отправки данных в базу данных Firebase я получаю нулевое значение вместо снимка в then () - PullRequest
0 голосов
/ 06 октября 2018

Я использую React Native Firebase для работы с Firebase.В редукционном действии у меня есть:

export const startAction = (item) => {


    return (dispatch) => {

        firebase.database().ref(`/users/${firebase.auth().currentUser.uid}/some/`)
            .push(item).then((snapshot) => {
                console.log('Added to firebase', snapshot,  snapshot.key);

            }).catch((err) => { console.log('errooooor', err) });
    }


}

В then () Я должен получить снимок вставленных данных, но я получаю null .Как это возможно?

Текст ошибки: Невозможно прочитать свойство 'ключ' с нулевым значением

1 Ответ

0 голосов
/ 07 октября 2018

Согласно документации Firebase (https://rnfirebase.io/docs/v5.x.x/database/reference/Reference#push), Reference.push() не возвращает обещание. Возвращает ссылку.

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

export const startAction = (item) => {
    return (dispatch) => {
        firebase.database().ref(`/users/${firebase.auth().currentUser.uid}/some/`)
            .push(item, error => {
                if (!error)
                    console.log("Item added to firebase");
                else
                    console.warn("There was an error writing to the database, error);
            })
    }
}

РЕДАКТИРОВАТЬ: На основе комментариев Салакара здесь и на этой проблеме Github :

без await также правильно, поскольку создание новой ссылки + путь к идентификатору с помощью push () выполняется синхронно / на стороне клиента

Вы должны быть в состоянии сделать следующее:

const ref = firebase.database()
                .ref(`/users/${firebase.auth().currentUser.uid}/some/`)
                .push(item)
// Now do something with `ref.key`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...