我对GraphQL和AWS Amplify都是新手,所以这可能是一个新手问题。
我已经在schema.graphql中定义了下面列出的类型。如果我使用带有id: ID!
的类型创建突变,则会得到Cannot return null for non-nullable field Vocabulary.id
。
如何在AWS Amplify graphql中指定字段应为identity
字段?在此AWS amplify workshop中为id: ID!
字段指定identity
似乎很好。
〜\ amplify \ backend \ api \ vidaudtranscription \ schema.graphql :
type Vocabulary @model
@key(fields:["userId"])
@auth(rules: [{allow: owner}])
{
id: ID!
userId: String!
vocabularies: [String!]!
}
突变请求:
mutation MyMutation {
createVocabulary(input: {userId: "abc", vocabularies: ["123", "456"]}) {
id
owner
userId
vocabularies
}
}
突变响应:
{
"data": {
"createVocabulary": null
},
"errors": [
{
"message": "Cannot return null for non-nullable field Vocabulary.id.",
"locations": [
{
"line": 5,
"column": 5
}
],
"path": [
"createVocabulary",
"id"
]
}
]
}
答案 0 :(得分:0)
您必须在id
参数中提供input
:
createVocabulary(input: {userId: "abc", vocabularies: ["123", "456"]})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
该错误有点难以理解,但其中包含解密所需的所有信息:
"Cannot return null for non-nullable field Vocabulary.id."
抱怨Vocabulary.id
(在您创建的Vocabulary对象中)不能为null,但它为空"path": ["createVocabulary", "id"]
是丢失字段的位置,即createVocabulary
结构中的“ id”字段(我在这里详细介绍了一些细节。为了从技术上纠正,错误是由于 resolver 无法序列化响应对象,而不是解释输入对象。但是如果您提供输入对象中的必填字段,其余字段应正常工作。)