使用 react-redux-firebase 消费云功能 - React JS

Posted

技术标签:

【中文标题】使用 react-redux-firebase 消费云功能 - React JS【英文标题】:Using react-redux-firebase to comsume cloud functions - React JS 【发布时间】:2020-09-23 00:17:35 【问题描述】:

我是 React JS 的新手。我正在尝试开发一个简单的网页来呈现来自云 Firestore 的数据。我正在使用react-redux-firebase 来获取数据。它工作正常。现在我希望从云函数中获取数据。我已经成功部署了云功能。我什至可以使用axios 从云函数中获取数据。但我想使用react-redux-firebase。我搜索了很多,找不到一个例子。请帮帮我。

const firebase = getFirebase();

    var animals = firebase
        .functions()
        .httpsCallable("getAllAnimals");
    animals()
        .then(result => 
            console.log("result ------------- ", result)
        )
        .catch(error => console.log('errorrrrrrrr ' + error)
        );

使用这个,我得到以下错误。

errorrrrrrrr Error: Response is missing data field.

【问题讨论】:

请编辑问题以显示您打算调用的可调用函数。请注意,您的客户端客户端专门尝试调用callable function,它应该在后端这样定义。 我不认为react-redux-firebase 是为了取代像 Axios 或 Fetch API 这样的请求库,最终你的 Cloud Function 是一个 HTTP 端点。您是否检查过它是否可以使用 Axios?您还可以共享函数代码和在反应组件中发出请求的 sn-p tha 吗? (现在功能代码好像不完整) @Happy-Monad,谢谢。使用 Axios 我可以获取数据。但我想在某一时刻集中我的数据。那就是我想使用 react-redux-firebase。 【参考方案1】:

我认为这里有两个不同的东西,库react-reduc-firebase 和集中状态。

正如您在 cmets 中所说,您可以使用 Axios 等请求库查询 HTTP 云函数,但我知道您还想通过 react-redux-firebase 查询云函数。但是,该库不适用于查询任意 HTTP 端点,例如此函数或任何其他 HTTP 可访问 API。相反,该库旨在成为一个舒适且开箱即用的界面,可以与拥有自己的 JS 客户端库和 API 的产品无缝交互,否则需要您自己编写所有胶水代码。在 Github 的 feature list 中找不到 Cloud Functions 的原因可能是因为没有特殊处理需要到达它们,因此没有提供接口层。

另外,我了解到您希望本着 Redux (Flux) 应用程序架构的精神集中您的数据。 IMO 您同时使用 Axios 和 Firestore 的事实并不与集中状态管理的原则相冲突,只要数据的更改和管理与 Redux core principles 一致,集中状态管理就不会知道如何获取数据。当每个数据库都有其特定的怪癖时,并非所有信息都可以通过单个过程访问,这是有道理的。

【讨论】:

【参考方案2】:

如果其他人试图通过 react-redux-firebase 使用云功能,如果可能配置,这是可能的。

在主应用的index.js 文件中,您为ReactReduxFirebaseProvider 配置firebase,请务必同时导入firebase/functions

// src/index.js
import firebase from 'firebase/app';
import 'firebase/functions';

这将允许您将firebase.functions()useFirebase() 挂钩一起使用。

【讨论】:

以上是关于使用 react-redux-firebase 消费云功能 - React JS的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-redux-firebase 消费云功能 - React JS

使用 React 和 react-redux-firebase 在登录期间确定范围

如何使用 react-redux-firebase 将 'auth' 或 'profile' 对象传递给 firestoreConnect()?

如何使用 react-redux-firebase 从 firestore 获取子集合

React-redux-firebase:未捕获的错误:提供的 prop/s“调度”保留用于内部 firebaseConnect() 使用

如何纠正 Redux 商店中的 React-Redux-Firebase 错误