gpt4 book ai didi

reactjs - 将对象数组添加到 apollo-react 中的突变中

转载 作者:行者123 更新时间:2023-12-03 13:29:32 24 4
gpt4 key购买 nike

我在前端使用react-apollo,在后端使用graphcool。我有一个突变,可以创建如下教程:

const CREATE_TUTORIAL_MUTATION = gql`
mutation CreateTutorialMutation(
$author: String
$link: String
$title: String!
$postedById: ID!
$completed: Boolean!
) {
createTutorial(
author: $author
link: $link
title: $title
postedById: $postedById
completed: $completed
) {
author
link
title
postedBy {
id
name
}
completed
}
}
`

它在提交处理程序中被调用,就像这样......

this.props.createTutorialMutation({
variables: {
author,
link,
title,
completed: false,
postedById
}
})

一切都运转良好。

现在我想在创建新教程时添加一组标签。我创建了输入字段并将其连接起来,以便 Tags 变量是一个对象数组,每个对象都有一个标签 id 和标签 text

如果我尝试将标签字段添加到突变中,它需要一个标量类型。但对象数组似乎没有标量类型。

如果我在调用突变时将标签变量作为参数传递,如何填写突变中的标量类型字段(此处第 148 行 https://github.com/joshpitzalis/path/blob/graphQL/src/components/Add.js )和架构中?

我是 graphQL 新手,我知道我可能会以完全错误的方式处理这个问题。如果是这种情况,如何将对象数组添加到 graphQL 中的突变中?

最佳答案

您应该向架构文件添加一个新的 Tag 类型,并使用新关系将其连接到 Tutorial:

type Tutorial {
author: String
completed: Boolean
link: String
title: String!
id: ID! @isUnique
createdAt: DateTime!
updatedAt: DateTime!
postedBy: User @relation(name: "UsersTutorials")
tags: [Tag!]! @relation(name: "TutorialTags")
}

type Tag {
id: ID!
tag: String!
number: Int!
tutorials: [Tutorial!]! @relation(name: "TutorialTags")
}

然后您可以使用嵌套创建突变来创建新教程和新标签,如下所示:

const CREATE_TUTORIAL_MUTATION = gql`
mutation CreateTutorialMutation(
$author: String
$link: String
$title: String!
$tags: [TutorialtagsTag!]!
$completed: Boolean!
$postedById: ID!
) {
createTutorial(
author: $author
link: $link
title: $title
tags: $tags
completed: $completed
postedById: $postedById
) {
author
link
title
postedBy {
id
name
}
completed
tags {
id
text
}
}
}
`

这篇文章提供了有关其他方法及其权衡的更多背景信息:https://www.graph.cool/forum/t/how-do-i-add-an-array-of-objects-to-a-mutation-in-apollo-react/365/6?u=nilan

关于reactjs - 将对象数组添加到 apollo-react 中的突变中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45253671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com