Firebase数据提供程序+自定义数据提供程序-React Admin

时间:2020-04-24 11:38:43

标签: javascript reactjs firebase react-admin dataprovider

我拼命地搜索和堆满了几个小时,“如何在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的帖子。有趣的事实是,当我在管理道具中直接使用firebaseProvider时,发布列表的工作情况。 WTF?非常感谢

1 个答案:

答案 0 :(得分:1)

哦,快来Connor!它不起作用的原因是如此简单!您只是返回firebaseProvider,而不是调用它并返回结果!因此,请尝试使用此代码,它将绝对容易实现!

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

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