<ReferenceArrayInput /> 不适用于我的自定义数据提供程序(棱镜)

Posted

技术标签:

【中文标题】<ReferenceArrayInput /> 不适用于我的自定义数据提供程序(棱镜)【英文标题】:<ReferenceArrayInput /> not working with my custom data provider (prisma) 【发布时间】:2019-01-28 03:12:29 【问题描述】:

我目前正在基于 graphcool 为 prisma 构建一个数据提供程序,但未能成功使 &lt;ReferenceArrayInput /&gt; 工作。

该组件成功地查询了项目的值和所有可用的可能值,但是在尝试匹配两者时似乎失败了。结果,我得到一个标签为 At least one of the associated references no longer appears to be available.,但没有选择任何值。

这是我的数据提供者返回的数据:

GET_MANY 请求返回以获取实际选择:

[
  
    "id": "cji4xk7ly00k3085444gszh6e",
    "name": "value1",
    "option.id": "cji4xk7lx00k20854ns2bersv",
    "option": 
      "id": "cji4xk7lx00k20854ns2bersv"
    
  ,
  
    "id": "cji4xk7lz00k40854gp876vgn",
    "name": "value2",
    "option.id": "cji4xk7lx00k20854ns2bersv",
    "option": 
      "id": "cji4xk7lx00k20854ns2bersv"
    
  
]

以及GET_LIST请求返回的数据来获取所有可能的值:

[
  
    "id": "cji4xk7lz00k40854gp876vgn",
    "name": "value2",
    "option.id": "cji4xk7lx00k20854ns2bersv",
    "option": 
      "id": "cji4xk7lx00k20854ns2bersv"
    
  ,
  
    "id": "cji4xk7ly00k3085444gszh6e",
    "name": "value1",
    "option.id": "cji4xk7lx00k20854ns2bersv",
    "option": 
      "id": "cji4xk7lx00k20854ns2bersv"
    
  ,
  
    "id": "cjit6nvot00j80954n53vj6vt",
    "name": "1x100ml",
    "option.id": "cjit6dejm00bt0954ts5g2f5g",
    "option": 
      "id": "cjit6dejm00bt0954ts5g2f5g"
    
  ,
  
    "id": "cjit6gu5o00d00954vzfuda0l",
    "name": "19mg",
    "option.id": "cjit6e66i00cb0954u1zlg1i3",
    "option": 
      "id": "cjit6e66i00cb0954u1zlg1i3"
    
  
]

在 JSX 部分,这是我的代码:

export const OptionEdit = props => (
  <Edit title="Edit an option" ...props>
    <SimpleForm>
      <DisabledInput source="id" />
      <TextInput source="name" />
      <ReferenceArrayInput source="values" reference="OptionValue" perPage=100>
        <SelectArrayInput optionText="name" />
      </ReferenceArrayInput>
    </SimpleForm>
  </Edit>
);

如果需要,我可以尝试为您设置一些东西来重现我的问题,我希望这足以让您帮助我。如果它可以提供帮助,这里是包含我(非常 wip)数据提供者和仪表板的存储库ra-data-prisma

非常感谢您的帮助。

更新:

如果您想尝试,这里有一个代码框:https://codesandbox.io/s/xvqm6mnyxz?expanddevtools=1&initialpath=App.js&module=%2Fsrc%2FApp.js

只需尝试编辑 User,然后查看控制台中的响应以及未加载选项的 SelectArrayInput

这是用于生成代码框示例中使用的 Prisma API 的数据模型:

type User 
  id: ID! @unique
  name: String!
  addresses: [Address!]!


type Address 
  id: ID! @unique
  city: String!
  user: User!

【问题讨论】:

【参考方案1】:

知道了。 react-admin 需要一个 id 数组来匹配资源。我需要做的就是将&lt;ReferenceArrayInput /&gt; source 属性设置为&lt;resource&gt;Ids。这解决了问题。

【讨论】:

以上是关于<ReferenceArrayInput /> 不适用于我的自定义数据提供程序(棱镜)的主要内容,如果未能解决你的问题,请参考以下文章

WEB开发经验点滴

X-005 FriendlyARM tiny4412 uboot移植之时钟初始化

X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯

X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件

X-007 FriendlyARM tiny4412 u-boot移植之内存初始化

X-009 FriendlyARM tiny4412 uboot移植之SD Card用起来Kernel boot起来