代码之家  ›  专栏  ›  技术社区  ›  Ashy Ashcsi

将现有nodejs express API与react admin连接

  •  0
  • Ashy Ashcsi  · 技术社区  · 8 年前

    我有一个现有的nodejs和购物车的expressapi。我想将此API与react admin集成。 https://github.com/marmelab/react-admin . 我已将以下代码添加到应用程序。js文件从数据库加载类别。

    // in src/App.js
    import React from 'react';
    import { Admin, Resource } from 'react-admin';
    import restProvider from 'ra-data-simple-rest';
    
    import { CategoriesList } from './categories';
    
    const App = () => (
      <Admin dataProvider={restProvider('http://localhost:5000/api')}>
        <Resource name="categories" list={CategoriesList} />
      </Admin>
    );
    
    export default App;
    

    但它不断抛出以下错误:

    HTTP响应中缺少内容范围标头。简单REST数据提供程序希望资源列表的响应包含此标头以及生成分页的结果总数。如果您使用的是CORS,您是否在Access Control Expose Headers标头中声明了内容范围?

    此外,还修改了服务器端的代码以包括以下标题:

    /**
     * GET request to retrieve all categories
     */
    router.get('/api/categories', async (req, res) => {
        try {
            const categories = await Category.find({});
            res.setHeader('Access-Control-Expose-Headers', 'Content-Range');
            res.setHeader('Content-Range', 5);
            res.send({ data: categories, total: 5 });
        } catch (error) {
            console.log(`error in getting categories ${error}`);
        }
    })
    

    以前是否有人与react admin合作过。我错过了什么?

    谢谢

    1 回复  |  直到 8 年前
        1
  •  2
  •   Gildas Garcia    7 年前

    是的,你的 Content-Range 标题是错误的。它必须具有以下格式:

    Content-Range: categories 0-5/5
    

    看见 https://github.com/marmelab/react-admin/tree/master/packages/ra-data-simple-rest