【发布时间】:2020-01-09 03:03:33
【问题描述】:
我的申请中有错误。我使用 Next.js / ApolloClient / GraphQL 和 Prisma。该错误与 GraphQL 架构有关,它在 Mutation 中使用:
错误:原因:“end_date”字段“end_date”未在 输入类型 ArticleCreateInput
我尝试在每个文件上复制/粘贴全局架构以获得良好的对应数据,但它不起作用。
我的数据模型(datamodel.prisma):
type Article {
id: ID! @id
title: String!
description: String!
createdAt: DateTime! @createdAt
updatedAt: DateTime! @updatedAt
image: String
maxUserNumber: Int!
greatImage: String
street: String!
begin_date: DateTime!
end_date: DateTime!
price: Int!
user: User!
}
我的 schema.graphql:
createArticle(
title: String!
description: String!
image: String
maxUserNumber: Int!
greatImage: String
street: String!
begin_date: DateTime!
end_date: DateTime!
price: Int!
): Article!
在我的生成文件 (prisma.graphql) 中:
input ArticleCreateInput {
id: ID
title: String!
description: String!
image: String
maxUserNumber: Int
greatImage: String
street: String
begin_date: DateTime
end_date: DateTime
price: Int!
user: UserCreateOneInput!
}
客户端突变和状态:
const CREATE_ARTICLE_MUTATION = gql`
mutation CREATE_ARTICLE_MUTATION(
$title: String!
$description: String!
$image: String
$maxUserNumber: Int!
$greatImage: String
$street: String!
$begin_date: DateTime!
$end_date: DateTime!
$price: Int!
) {
createArticle(
title: $title
description: $description
image: $image
maxUserNumber: $maxUserNumber
greatImage: $greatImage
street: $street
begin_date: $begin_date
end_date: $end_date
price: $price
) {
id
}
}
`;
export class CreateArticle extends Component {
state = {
adresse: "",
title: "",
description: "",
image: "",
greatImage: "",
price: 0,
nbPersons: 2,
loadigImg: false,
begin_date: moment(new Date(Date.now())).format("YYYY-MM-DD"),
end_date: moment(new Date(Date.now()))
.add(1, "days")
.format("YYYY-MM-DD")
};
使用 Mutation 调用:
<Mutation
mutation={CREATE_ARTICLE_MUTATION}
variables={{
...this.state,
maxUserNumber: this.state.nbPersons,
street: this.state.adresse
}}
>
还有后端变异:
async createArticle(parent, args, ctx, info) {
if (!ctx.request.userId) {
throw new Error("Vous devez être connecté");
}
const article = await ctx.db.mutation.createArticle(
{
data: {
user: {
connect: {
id: ctx.request.userId
}
},
...args
}
},
info
);
return article;
},
当我使用我的 createArticle 突变时,我有一个指定的错误:
原因 'end_date' 字段未在类型中定义 ArticleCreateInput
但是,当我在我的变异中记录 args 时,我拥有所有字段!
【问题讨论】:
-
你也可以添加你正在使用的突变逻辑吗?客户端也是:)
-
我在上面的描述中添加了这个。感谢您的帮助
-
GraphQL 默认将标识符转换为驼峰式。这很可能是你的问题。开始日期,结束日期 -> 开始日期,结束日期
标签: reactjs graphql field apollo prisma