firebase - 反应原生 Firebase。将数据推送到 firebase 数据库后,我在 then() 中得到 null 而不是快照
问题描述
我使用 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 的属性“键”
解决方案
根据 Firebase 文档(https://rnfirebase.io/docs/v5.xx/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 的评论和关于这个 Github 问题:
没有等待也是正确的,因为通过 push() 创建新的参考 + id 路径是同步/客户端的
您应该能够执行以下操作:
const ref = firebase.database()
.ref(`/users/${firebase.auth().currentUser.uid}/some/`)
.push(item)
// Now do something with `ref.key`
推荐阅读
- python - 空字符串与其他字符串相比如何?
- python - Python/Tkinter 背景在配置为时不改变颜色
- sql-server - 使用谷歌数据工作室处理的大 Postgres 数据大小
- tensorflow - 使用 BERT (TF 1.x) 保存的模型执行推理
- python - 梯度下降 - 作为列表和作为 numpy 数组的 theta 之间的区别
- java - 用于 DFA 最小化算法的 Java 中的 Pair 类的良好替代品?
- python - 使用 PyPlot 更新 Tkinter Canvas:非常奇怪的行为 - Python3
- c++ - 如何通过TCP接收多个文件并在C++中同时保存?
- r - 进行逻辑回归时如何绘制缺失的正态分布?
- linux - 如何重命名文件,谢谢