Is it possible to have multiple dataProviders in react-admin?

后端 未结 4 1696
半阙折子戏
半阙折子戏 2020-12-31 10:43

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

4条回答
  •  情话喂你
    2020-12-31 11:16

    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..."

提交回复
热议问题