我将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()中,我应该获得快照插入的数据,但我却获得 null 。那怎么可能?
错误文本:无法读取null的属性“键”
答案 0 :(得分:2)
根据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);
})
}
}
编辑:基于Salakar在这里和this Github issue上的评论:
没有等待也是正确的,因为通过push()创建一个新的引用+ id路径是同步的/客户端
您应该能够执行以下操作:
const ref = firebase.database()
.ref(`/users/${firebase.auth().currentUser.uid}/some/`)
.push(item)
// Now do something with `ref.key`