“变量输入包含未为输入对象类型“AddMapTypeUserAccessPolicy”定义的字段

问题描述 投票:0回答:1

我正在尝试查询 aws appsync,它可以很好地处理查询,但当我尝试使用标题中的错误进行突变时总是失败

这是我的架构:

input AddMapType {
    key: String
    value: [Float]
}
 
input AddMapTypeUserAccessPolicy {
    Statements: [AddMapTypeUserAccessPolicySegments]
}
 
input AddMapTypeUserAccessPolicySegments {
    Type: String
    Effect: String
    Resource: String
    Expiration: String
}

input AddMessage {
    ar: String
    en: String
    fr: String
}

input UserProfileInput {
    userId: Float
    firstName: String
    lastName: String
    portalId: Float
    portalType: Int
    email: String
    gradeId: Float
    userName: String
    message: AddMessage
    authorized: Int
    roles: [String]
    classIds: [Float]
    profilePic: String
    userSessions: [AddMapType]
    userAccessPolicy: AddMapTypeUserAccessPolicy
}

type Mutation {
    createUserProfile(input: UserProfileInput!): UserProfile
    updateUserProfile(input: UserProfileInput!): UserProfile
    deleteUserProfile(input: UserProfileInput!): UserProfile
}

type UserProfile {
    userId: Float!
    firstName: String
    portalId: Float
    portalType: Int
    message: Message
    authorized: Int
    lastName: String
    roles: [String]
    classIds: [Float]
    userName: String
    email: String
    gradeId: Float
    profilePic: String
    userSessions: [MapType]
    userAccessPolicy: MapTypeUserAccessPolicy
}

type MapType {
    key: String
    value: [Float]
}
 
type MapTypeUserAccessPolicy {
    Statements: [MapTypeUserAccessPolicySegments]
}
 
type MapTypeUserAccessPolicySegments {
    Effect: String
    Expiration: String
    Resource: String
    Type: String
}
 
type Message {
    ar: String
    en: String
    fr: String
}

这是c#代码

var Query = new GraphQLRequest
{
    Query = @"
           mutation UpdateUserProfileMutation($input: UserProfileInput!) {
              updateUserProfile (input: $input) {
               authorized
               userSessions {
                    key
                    value
               }
               firstName
               lastName
               message {
                 ar
                 en
                 fr
               }
               portalId
               portalType
               profilePic
               roles
               userId
               userName
               email
               gradeId
               userAccessPolicy {
                        Statements {
                          Effect
                          Expiration
                          Resource
                          Type
                        }
                      }
              }
            }",
    Variables = new { input = input }
};

try
{

    var request = await _qLHttpClient.SendQueryAsync<UpdateMutationResponse>(Query);
    var response = request.Data?.updateUserProfile;
    return response;
}
catch (Exception ex)
{
    throw ex;
}

这是我发送给突变的输入:

{
   "UserId":1234567890,
   "PortalType":1234,
   "PortalId":1234567890,
   "FirstName":"test",
   "LastName":"test",
   "UserName":"test",
   "Email":null,
   "GradeId":0,
   "ProfilePic":null,
   "Authorized":1,
   "ClassIds":[
   ],
   "Roles":[
      "test"
   ],
   "UserSessions":[
      {
         "Key":"1234567800",
         "Value":[
            397138921869
         ]
      }
   ],
   "Message":{
      "ar":" ",
      "en":" ",
      "fr":" "
   },
   "userAccessPolicy":{
      "Statements":[
         {
            "Type":"test",
            "Effect":"test",
            "Resource":"test",
            "Expiration":"2027-12-26T13:08:34.232Z"
         },
         {
            "Type":"test",
            "Effect":"test",
            "Resource":"test",
            "Expiration":"2027-12-26T09:46:00.089Z"
         }
      ]
   }
}

我真的不知道我错过了什么,在我看来,输入包含 AddMapTypeUserAccessPolicy 输入类型中的所有内容

c# aws-appsync
1个回答
0
投票

我找到了一个解决方法,我将突变的对象发送到与突变本身相同的字符串中。

var Query = new GraphQLRequest
{
    Query = @"mutation UpdateUserProfileMutation {
                          updateUserProfile (input:{userId: 111111,portalType: 4,portalId: 1111,firstName: "test",lastName: "test",userName: "[email protected]",email: "[email protected]",gradeId: 11111,profilePic: "null",authorized: 1,classIds: [],roles: ["test"],userSessions: [{key:"test",value:[0]},{key:"test",value:[0]}],message: {ar: " ",en: " ",fr: " "},userAccessPolicy: { Statements: []}}) {
                           authorized
                           userSessions {
                                key
                                value
                           }
                           firstName
                           lastName
                           message {
                             ar
                             en
                             fr
                           }
                           portalId
                           portalType
                           profilePic
                           roles
                           userId
                           userName
                           email
                           gradeId
                           userAccessPolicy {
                                    Statements {
                                      Effect
                                      Expiration
                                      Resource
                                      Type
                                    }
                                  }
                          }
                        }"
};
© www.soinside.com 2019 - 2024. All rights reserved.