对 'GET_LIST' 的响应必须类似于 { data : [...] },但接收到的数据不是数组

问题描述 投票:0回答:3

我正在尝试使用 ra-data-simple-rest 数据提供程序

import React from 'react';
import { Admin, fetchUtils, Resource } from 'react-admin';
import simpleRestProvider from 'ra-data-simple-rest';
import { PostList } from './Posts';

const dataProvider = simpleRestProvider('http://localhost:8000');

const App = () => (
    <Admin dataProvider={dataProvider}>
        <Resource name="posts" list={PostList} />
    </Admin>
);

export default App;

react-admin 监听 http://localhost:3000/#/posts

Api 运行于:http://localhost:8000/posts,返回响应为。

$response = new JsonResponse($output);
$response->headers->set('Content-Range', 'posts 0-0/5');
$response->headers->set('Access-Control-Expose-Headers', 'Content-Range');
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");

将某些内容重新调整为

{
    "data": [
        {
            "id": "1",
            "title": "Hello world",
            "body": "Hello world"
        },
        {
            "id": "2",
            "title": "Hello world",
            "body": "Hello world"
        }
    ],
    "total": 2
}

我收到错误为

对 'GET_LIST' 的响应必须类似于 { data : [...] },但接收到的数据不是数组。 dataProvider 的“GET_LIST”可能是错误的

如果

data
键被移除为

[
    {
        "id": "1",
        "title": "Hello world",
        "body": "Hello world"
    },
    {
        "id": "2",
        "title": "Hello world",
        "body": "Hello world"
    }
]

正在得到结果。

react-admin
3个回答
11
投票

最后我明白这是按照反应管理员的预期工作的。

问题出在文档中,我注意到了

这让我很困惑。

进一步了解https://github.com/marmelab/react-admin/blob/1b6967f3367b13a6675de7047bd9385dc36a8db5/packages/ra-data-simple-rest/src/index.js#L118我了解数据是由提供商。


1
投票

我面临同样的问题,在检查我的 API 响应后,我了解到对象中缺少一个字段:

{ "data": [ { "id": "1", "title": "Hello world", "body": "Hello world" }, { "title": "Hello world", "body": "Hello world" } ], "total": 2 }
第二个 obj 中缺少

id。这就是我面临这个问题的原因

任何遇到此问题的人请检查 API 响应中的所有字段。


0
投票

我刚刚看到 Hari K T 的回应,那是真的。

我不明白为什么 React 不接受我这样构建的响应:

{'data': {'id': 31, 'chat_name': 'yudyucvbcvbcvb', 'theme': 'duytyu'}}

看起来 {'data': ...} 部分完全没有必要。

在我们合作伙伴的 Hari 链接中:https://github.com/marmelab/react-admin/blob/1b6967f3367b13a6675de7047bd9385dc36a8db5/packages/ra-data-simple-rest/src/index.js#L118它清楚地表明数据部分已初始化,因此在我的情况下,我发送了一个错误的 JSON,如下所示

{'data':{'data': {'id': 31, 'chat_name': 'yudyucvbcvbcvb', 'theme': 'duytyu'}}}

就我而言,我的错误是在 data -> {data: {id:...}} 之后请求 ID,但我发送的是 {data: {data: {id...}}}

© www.soinside.com 2019 - 2024. All rights reserved.