If I have multiple distinct REST API back-ends (separate apps doing separate things), and I want a single UI (react-admin-based) app that is capable of doing CRUD to entitie
In the README of recent ra release (3.4.1), there is a section (Extending a Data Provider (Example of File Upload)) that mentions: "... combine two Data Providers for two backends into a single object...". You can write a wrapper with branches to relay to different provider's implementation. An example to add your real data provider on top of their demo is:
// new file dataProvider/super.js
import simpleRestProvider from 'ra-data-simple-rest';
import delayedDataProvider from './rest'
const realDataProvider = simpleRestProvider('http://real_world_url/');
const myDataProvider = {
...delayedDataProvider,
getList: (resource, params) => {
console.log(resource)
if (["customers", "reviews", "commands"].includes(resource)) {
// resources for the demo
return delayedDataProvider.getList(resource, params)
} else {
// your own resources
return realDataProvider.getList(resource, params)
}
},
};
export default myDataProvider;
and replace the delayedDataProvider with the above myDataProvider
// file dataProvider/index.js
case 'graphql':
return import('./graphql').then(factory => factory.default());
default:
- return import('./rest').then(provider => provider.default);
+ return import('./super').then(provider => provider.default);
Disclaimer: I got the same error as previous posts "provider is not function..."