1

我有一个现有的 nodejs 和 express API 用于购物车。我想将此 API 与 react-admin 集成。 https://github.com/marmelab/react-admin。我已将以下代码添加到 app.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 响应中缺少 Content-Range 标头。简单的 REST 数据提供者期望资源列表的响应包含此标头以及构建分页的结果总数。如果您使用的是 CORS,您是否在 Access-Control-Expose-Headers 标头中声明了 Content-Range?

此外,修改了服务器端的代码以包含这些标头,如下所示:

/**
 * 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 工作过。我在这里想念什么?

谢谢

4

1 回答 1

2

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

Content-Range: categories 0-5/5

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

于 2018-07-19T08:01:18.227 回答