【问题标题】:React Admin getOne doesnt work with Api Patform dataProviderReact Admin get One 不适用于 Api Platform dataProvider
【发布时间】:2021-02-11 20:19:55
【问题描述】:

我正在使用后端的 @api-platform API 和他们的 react admin 样板构建一个 CMS。使用他们的 Hydra dataProvider 调用 getOne 的任何 Query 方法似乎都不起作用。我尝试了所有的钩子以及遗留的 组件或 useDataProvider.getOne。行为是 GET URL 生成错误。它不包含 resource 路径。相反,在创建的 URL 中有一个 undefined

<Query type="getOne" resource="videos" payload={{ id: '1000' }}>
    {({ data, loading, error }) => {
        if (loading) {
            return <Loading />;
        }
        if (error) {
            return <Error />;
        }
        return data.name;
    }}
</Query>;

也使用 useQuery

const { data, loading, error } = useQuery({ 
        type: 'getOne',
        resource: 'videos',
        payload: { id: "1000"}
    });

他们正在生成以下 GET 请求:

Request URL: https://ra-api.testing.company.com/undefined Request Method: GET

所有其他方法都会生成类似这样的内容:

Request URL: https://ra-api.testing.company.com/api/videos Request Method: GET

dataProvider 如下所示:

export const dataProvider = baseHydraDataProvider(
    global.RA_API_ENTRYPOINT,
    fetchHydra,
    apiDocumentationParser
);

getLists 或 update/create 等其他方法工作正常。有什么想法吗?

【问题讨论】:

    标签: reactjs react-admin api-platform.com hydra-core


    【解决方案1】:

    Hydra 数据提供程序未使用 resource 参数进行 getOne 查询,仅使用 idhttps://github.com/api-platform/admin/blob/5badc1f19024c1800a60431e575219039b86d0b6/src/hydra/dataProvider.js#L227

    这是因为payload中的id需要是一个IRI,像这样:

    const { data, loading, error } = useQuery({ 
        type: 'getOne',
        resource: 'videos',
        payload: { id: '/videos/1000' },
    });
    

    使用 API Platform Admin(和 Hydra 数据提供者),所有标识符都是 IRI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多