Firebase 数据提供者 + 自定义数据提供者 - React 管理员

Firebase Data Provider + custom data provider - React admin

我拼命地谷歌搜索和计算数小时 "How to use multiple data providers with React-admin"。我发现很多东西都是我真正需要的。如何在 React admin v3 中动态使用 firebase 数据提供者 + 自定义数据提供者?我对帖子使用 react-admin-firebase,还需要对用户列表使用我们的自定义 api。

这是我尝试过的许多不同方式(if-else、switch 语句等):

For Example:

import { dataProvider as firebaseProvider } from "./firebase/firebase.utils";
import { usersMockData } from './api/mockData';

const superDataProvider = (type, resource, params) => {
  if (resource === 'users') {
    return new Promise(resolve => resolve(usersMockData));
  }

  return firebaseProvider;
};

  <Admin
  title="My site"
  authProvider={authProvider}
  dataProvider={superDataProvider}
  loginPage={LoginPage}
  >

  <Resource
    name="posts"
    options={{ label: "Posts" }}
    list={PostsList}
    edit={PostsEdit}
    show={PostsShow}
    create={PostsCreate}
    icon={PostsIcon}
  />

  <Resource
    name="users"
    options={{ label: "Users" }}
    list={usersList}
    show={usersShow}
    icon={usersIcon}
  />

</Admin>

// Output error when I try to reach page with posts from firebase: The dataProvider threw an error. It should return a rejected Promise instead.

实际上,加载了用户,但没有加载来自 firebase 的帖子。有趣的是,当我在 Admin prop 中直接使用 firebaseProvider 时,发布列表的工作。什么鬼?非常感谢

哦,加油,康纳!它不起作用的原因很简单!您只是 returning firebaseProvider,而不是调用它和 return 结果!所以试试这个代码,它肯定会很容易工作!

 const superDataProvider = (type, resource, params) => {
  if (resource === 'users') {
    return new Promise(resolve => resolve(usersMockData));
  }

  return firebaseProvider(type, resource, params);
};