<referencearrayinput>不能与我的自定义数据提供程序一起使用(棱镜)

时间:2018-08-21 21:36:31

标签: graphql react-admin prisma

我目前正在基于graphcool的prisma构建数据提供程序,但未能成功使<ReferenceArrayInput />工作。

该组件成功查询了项目的值以及所有可能的值,但是在尝试将两者都匹配时似乎失败了。结果,我得到一个标签为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>
);

如果需要,我可以尝试为您设置一些内容来重现我的问题,我希望这足以为您提供帮助。如果可以帮助的话,这里是包含我(非常精打细算)的数据提供者和仪表板ra-data-prisma

的存储库

非常感谢您的帮助。

更新:

如果您想尝试,请在此处输入密码:https://codesandbox.io/s/xvqm6mnyxz?expanddevtools=1&initialpath=App.js&module=%2Fsrc%2FApp.js

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

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

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

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

1 个答案:

答案 0 :(得分:2)

知道了。 react-admin需要一个ID数组来匹配资源。我要做的就是将<ReferenceArrayInput /> source道具设置为<resource>Ids。解决了这个问题。

相关问题