【发布时间】:2018-07-10 02:33:26
【问题描述】:
使用: 用 expo 反应原生
react-redux: 5.0.6
redux:3.7.2
火力基地:4.9.0
(请参阅下面的修复:降级到 firebase 4.6.2)
更新:这是一个更长的问题,因为怀疑 redux 不能很好地与 firebase 配合使用。但情况似乎并非如此。只保留相关部分
这是一个与 redux 挂钩的动作创建器。
在此处使用firebase.auth().signInWithEmailAndPassword() 时,一切正常。
action.js
import firebase from 'firebase'
import 'firebase/firestore'
export const dataFetch = () => {
return (dispatch) => {
firebase.auth().signInWithEmailAndPassword('a@b.com', 'passw')
.then(
(result => dispatch({ type: 'DATA_FETCH_SUCCESS', payload: result })),
(() => alert("got here"))
)
.catch((err) => alert(err))
}
};
但是当使用firebase.firestore().collection(...).get() 时,执行不会进入then() 部分 - 无法在其中记录任何内容。
import firebase from 'firebase'
import 'firebase/firestore'
export const dataFetch = () => {
return (dispatch) => {
firebase.firestore().collection('MyCollection').get()
.then(
(result => dispatch({ type: 'DATA_FETCH_SUCCESS', payload: result })),
(() => alert("got here"))
)
.catch((err) => alert(err))
}
};
可能是什么问题? 有没有特定的方法来传递收集路径? firebase 配置可能不正确吗?我仔细检查了一切,看起来正确。我正在将配置用于 Web 应用程序。是否有某些特定于 Firestore 的东西可能会丢失?
我的 firebase 配置中有以下键:
apiKey: '', // Auth / General use
authDomain: '', // Auth with popup/redirect
databaseURL: '', // Realtime Database
storageBucket: '', // Storage
messagingSenderId: '',// Cloud Messaging
projectId: '', // Firestore
【问题讨论】:
-
如果您在
dataFetch中登录了querySnapshot,您会得到什么? -
实际上,在
.get()之后的执行似乎根本不在.then()内部。是因为指定收集路径的方式吗?无法记录 querySnapshot。 -
我只是在参数中使用名称
'MyCollection'。也试过'/MyCollection',还是不行。 -
仔细检查了我的 firebase 配置,一切正常。如何确认我连接到正确的数据库?我知道,这听起来很基础,但我觉得我没有正确连接到数据库。不知道我错过了什么。
-
请检查
dataFetch是否被调用,在函数的第一行添加日志语句
标签: reactjs firebase redux promise google-cloud-firestore