我正在构建一个使用firebase作为后端的反应应用程序。
我有一个工作流程,我使用batch.commit()
提交4个文档batch.set(key1, obj1)
batch.set(key2, obj2)
batch.set(key3, obj3)
batch.set(key4, obj4)
let promise = batch.commit()
我的理解是,一旦承诺解决,文件就会被写入后端。
然后,如果我这样做,
db.collection(collectionKey).doc(key1).get()
我收到错误
缺少权限或权限不足
但是,如果我继续尝试获取该文档,获得通话最终会在大约3-5s后返回预期文档。
我做错了什么?这是预期的beta行为吗?我发现这篇文章似乎表明这是一个已知的问题,但这是一个基本的用例,我几乎可以肯定错误是我的实现。
https://groups.google.com/forum/#!searchin/firebase-talk/get $ 20latency%7Csort:日期/火力通话/ MpS6C-ZxdZ0 / EYNWdveIAwAJ
任何有见识的人都会感激不尽。
--------更新Jen Person ------------
我实际上在做异步/等待。但我也尝试过做一个普通的promise.then(回调)
try{
await batch.commit(dataArr)
} catch (err){
console.error('Error Batch Saving', err)
throw err;
}
this.setState({isProcessing: false})
我的get函数实际上是在onClick处理程序中。注册onClick的组件仅在batch.commit promise解析且this.state.isProcessing为false后才可见
我也试过像
这样的东西db.collection(collectionKey).doc(key1).get()
.then( res=>{
this.setState({isProcessing:false})
})