【问题标题】:How to use Cloud Firestore with React Native and Redux?如何将 Cloud Firestore 与 React Native 和 Redux 一起使用?
【发布时间】:2020-04-04 12:57:16
【问题描述】:

我是 React Native 的新手,正在尝试学习使用 Cloud Firestore。

基本上,当您想在 React Native 和 Firebase 中使用 Cloud Firestore 和身份验证时,我还没有弄清楚要遵循的整个路线图

我已成功将 Firebase 身份验证添加到我的应用中。

数据是用户创建的地点列表。我将它存储在 Redux 存储中,并在屏幕上生成一个 FlatList

现在的问题是如何将用户创建的每个列表存储到云端? 就像用户再次登录时,他/她可以看到他/她创建的数据。 我们还需要持久化数据吗?

我很想学习一些文章,或者整个进度的一般说明(不需要代码),例如第 1 步或什么要求,我们需要列出的应用程序的哪些状态等等。所以我可以自己动手解决

【问题讨论】:

    标签: reactjs firebase react-native redux google-cloud-firestore


    【解决方案1】:

    Cloud Firestore 的official documentation 真的很有用。

    在云 Firestore 上存储东西真的很容易。例如,如果你这样写:

    const doc = await firebase
        .firestore()
        .collection('bucketName')
        .doc('docId')
        .get()
        .data()
    

    您从存储桶bucketName 中获取ID 为docId 的文档。如果文档和/或存储桶不存在,则您只是未定义。


    相反,如果你写:

    const docId = await firebase
        .firestore()
        .collection('bucketName')
        .add({
          name: "Marco",
          born: "1993"
        })
    

    您将获得一个新文档的 ID docId,该文档已添加到包含对象 {...} 的集合 bucketName


    不需要架构。如果您将文档添加到不存在的存储桶中,Firebase 会创建该存储桶,然后将文档添加到其中。


    您需要从 React Native 触发一个函数并调用,例如我上面提供的代码。使用返回值,您可以使用 redux,将数据保存到存储中并在应用程序中使用它们。

    【讨论】:

    • -如果我在 Redux reducer 中这样做,它会被优化和正确吗?就像在调度动作的同时将数据发送到 Firestore(包括数据发送功能的动作文件) - 另外,我们是否应该保留该数据,或者每次用户想要查看数据时我们都会从 Firestore 请求?
    • @Marwin 您需要在函数中执行此操作,并仅使用返回的数据调度减速器操作,如下所示:dispatch({ type: SET_DATA, data: doc })。在您刷新应用程序之前,应用程序周围的数据都是可用的。如果您希望数据在刷新后保留(并且无需再次调用该操作),您需要使用 AsyncStorageredux-persist
    • 非常感谢马可。如果您不介意,再问 1 个问题:我们如何将这些发送到云的数据附加到经过身份验证的用户?就像用户登录时一样,他/她可以看到他/她创建的数据?
    • @Marwin 有很多方法可以做到这一点。例如,您可以将属性userId 与用户的uid 添加到文档.add({ name: "Marco", born: "1993", userId: ... })
    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 2018-06-10
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多