GraphQL变异-为Apollo客户端设计gql标签
我需要帮助找出用于Apollo客户端的GraphQL标记。这些文档并没有超出突变的最基本用例 我的目标是让唯一需要的输入是电子邮件。如果存在其他变量,我希望这些变量被接受,并创建一个包含所有这些信息的提案 我已经在GraphQl游乐场上成功地实现了变异(仅在电子邮件和完整变量场景中)(如果有帮助,您可以在这里找到它并进行测试,查看模式等):) 因此产生:GraphQL变异-为Apollo客户端设计gql标签,graphql,react-apollo,apollo-client,graphql-tag,Graphql,React Apollo,Apollo Client,Graphql Tag,我需要帮助找出用于Apollo客户端的GraphQL标记。这些文档并没有超出突变的最基本用例 我的目标是让唯一需要的输入是电子邮件。如果存在其他变量,我希望这些变量被接受,并创建一个包含所有这些信息的提案 我已经在GraphQl游乐场上成功地实现了变异(仅在电子邮件和完整变量场景中)(如果有帮助,您可以在这里找到它并进行测试,查看模式等):) 因此产生: { "data": { "createOneProposal": { "created_at": "2020-02-2
{
"data": {
"createOneProposal": {
"created_at": "2020-02-27T21:28:53.256Z",
"proposal_id": 35,
"types": [
{
"cost": 600,
"model": "PURCHASE",
"name": "e-commerce",
"type_id": 6,
"services": [
{
"service": "Responsive web design",
"service_id": 10
},
{
"service": "Another service!",
"service_id": 11
},
{
"service": "And yet another service!",
"service_id": 12
}
]
}
]
}
}
}
我对gql标签的初始设计:
export const NEW_PROPOSAL = gql`
mutation createOneProposal(
$email: String!
$name: String
$cost: Int
$model: Model
$service: Service
) {
createOneProposal(
email: $email
name: $name
cost: $cost
model: $model
service: $service
) {
created_at
proposal_id
types {
services {
service_id
}
}
}
}
`;
但是,我在这方面有很多错误
{"errors":[
{"Variable "$service" cannot be non-input type `"Service`".","locations":[{"line":1,"column":97}]},
{"Unknown argument "email" on field "createOneProposal`" of type "Mutation`".","locations":[{"line":2,"column":21}]},
{"Unknown argument "name" on field "createOneProposal`" of type "Mutation`".","locations":[{"line":2,"column":36}]},
{"Unknown argument"cost" on field "createOneProposal\" of type "Mutation`".","locations":[{"line":2,"column":49}]},
{"Unknown argument "model" on field "createOneProposal`" of type "Mutation`".","locations":[{"line":2,"column":62}]},
{"Unknown argument "service" on field "createOneProposal`" of type "Mutation`".","locations":[{"line":2,"column":77}]},
{"Field "createOneProposal" argument "data" of type "ProposalCreateInput!`" is required, but it was not provided.","locations":[{"line":2,"column":3}]}]}
那么,我该怎么做呢。。。我找到了查询版本(更简单…),但我就是想不出来
我的模式,如果有帮助:
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("MYSQL_URL_PRISMA2")
}
model Post {
content String @default("")
created_at DateTime @default(now())
post_id Int @default(autoincrement()) @id
published Boolean @default(false)
published_at DateTime?
title String @default("")
author User
}
model Profile {
bio String?
profile_id Int @default(autoincrement()) @id
user_id User
}
model Proposal {
email String @unique
name String?
proposal_id Int @default(autoincrement()) @id
created_at DateTime @default(now())
types Type[]
}
model Type {
cost Int?
name String?
model Model? @default(SUBSCRIPTION)
services Service[]
type_id Int @default(autoincrement()) @id
proposal_id Proposal
}
model Service {
service_id Int @default(autoincrement()) @id
service String?
type_id Type
}
model User {
email String @default("") @unique
name String @default("")
password String @default("")
role Role @default(USER)
user_id Int @default(autoincrement()) @id
posts Post[]
profiles Profile[]
}
enum Role {
USER ADMIN
}
enum Model {
SUBSCRIPTION PURCHASE CUSTOM
}
GraphQL类型分为输入类型或输出类型。输入类型用于变量定义或参数定义等输入。输出类型用于输入字段,这些字段构成实际响应。某些类型,如标量和枚举,可以用作输入或输出。但是,对于对象,有输出对象类型(有时仅指对象类型或对象)和输入对象类型
Service
是一种输出类型,因此不能在需要输入类型(在本例中为变量定义)的地方使用。检查Prisma生成的架构,以确定要使用的适当类型。GraphQL类型分为输入类型或输出类型。输入类型用于变量定义或参数定义等输入。输出类型用于输入字段,这些字段构成实际响应。某些类型,如标量和枚举,可以用作输入或输出。但是,对于对象,有输出对象类型(有时仅指对象类型或对象)和输入对象类型
Service
是一种输出类型,因此不能在需要输入类型(在本例中为变量定义)的地方使用。检查Prisma生成的模式,以确定要使用的适当类型。由于@xadm提供了一些非常需要的指导,我找到了标记的结构!对于将来遇到此问题的任何人:
mutation createOneProposal($input: ProposalCreateInput!){
createOneProposal(data:$input){
created_at
name
email
proposal_id
type{
cost
description
model
name
type_id
services{
service
cost
service_id
}
}
}
}
感谢@xadm提供的一些非常需要的指导,我找到了标签的结构!对于将来遇到此问题的任何人:
mutation createOneProposal($input: ProposalCreateInput!){
createOneProposal(data:$input){
created_at
name
email
proposal_id
type{
cost
description
model
name
type_id
services{
service
cost
service_id
}
}
}
}
突变中缺少
数据
<代码>服务未在ProposalCreateInput
类型中定义<代码>类型是必需的。。。为什么您试图定义/传递与工作结构完全不同的结构???@xadm Hi!我无意尝试通过完全不同的结构。。。我在哪里传递graphql标记中的数据
字段?这让我很困惑<代码>服务在服务
类型中定义。如果有帮助的话,我会添加我的模式!图式是一个,瑜伽生成的图式是另一个。。。在操场上探索文档。。。从第一个代码段复制结构<代码>createOneProposal(数据:{email:$email name:$name types:……进入GQLOK的中间部分,可以了,谢谢@xadm!我会在它工作后用答案更新。再次感谢!突变中缺少数据。服务在ProposalCreateInput
类型中没有定义…类型是必需的为什么你试图定义/传递与工作完全不同的结构???@xadm Hi!我无意尝试传递完全不同的结构…我将在graphql标记中的数据字段传递到哪里?这让我很困惑。服务是在服务类型中定义的。我将添加我的模式如果有帮助的话!模式是一个,瑜伽生成的模式是另一个…在操场上浏览文档…从第一个片段复制结构…createOneProposition(数据:{email:$email name:$name types:…
…进入GQLOK的中间部分,可以了,谢谢@xadm!我会在它运行后更新答案。再次感谢!