反应本机火力地堡。将数据推送到 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`
我使用 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`