反应本机火力地堡。将数据推送到 firebase 数据库后,我在 then() 中得到 null 而不是快照

React Native Firebase. After pushing data to firebase database I get null instead of snapshot in then()

我使用 React Native Firebase 来处理 Firebase。 在 redux 动作中我有:

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() 中,我应该得到插入数据的 snapshot,但我得到 null.这怎么可能?

错误文本:无法读取 属性 'key' of null

根据 Firebase 文档 (https://rnfirebase.io/docs/v5.x.x/database/reference/Reference#push),Reference.push() 不是 return 承诺。它 return 是一个参考。

如果您想知道对服务器的写入何时完成,可以将回调函数作为第二个参数传递给 .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);
            })
    }
}

编辑:基于 Salakar 在此处和 this Github issue 上的评论:

without the await is also correct as creating a new reference + id path via push() is synchronous/client sided

您应该能够执行以下操作:

const ref = firebase.database()
                .ref(`/users/${firebase.auth().currentUser.uid}/some/`)
                .push(item)
// Now do something with `ref.key`