我正在尝试查询 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 输入类型中的所有内容
我找到了一个解决方法,我将突变的对象发送到与突变本身相同的字符串中。
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
}
}
}
}"
};