Как вы можете обновить вложенную информацию в AWS Amplify для реагирования на родной язык? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть вложенная схема в graphql, и я пытаюсь использовать функцию обновления, созданную с помощью ampify, для обновления вложенной части схемы для определенного c идентификатора информации. У меня есть идентификатор таблицы, которую я хочу обновить, и я хочу обновить раздел hasBooks. Пытаясь использовать мой текущий код, я получаю две ошибки в зависимости от того, что я пробую:

"Ввод переменных содержит имя поля 'hasBooks', которое не определено для типа входного объекта 'UpdateInformationInput'"

и

"Переменная 'input' имеет принудительное значение Null для типа NonNull 'UpdateInformationInput!'"

схема:

type Information @model @searchable{
id: ID!
firstName: String!
lastName: String!
phoneNumber: Int
password: Int
timestamp:String!
hasBooks: [Books] @connection (name:"InformationBooks")


}
type Books @model { 
id: ID!
firstName: String!
lastName: String!
title: String!
information: Information @connection 
         (name:"InformationBooks")
}

export const updateInformation = /* GraphQL */ `
mutation UpdateInformation(
$input: UpdateInformationInput!
$condition: ModelInformationConditionInput
) {
updateInformation(input: $input, condition: $condition) {
  id
  firstName
  lastName
  phoneNumber
  password
  timestamp
  hasBooks {
    items {
      id
      firstName
      lastName
      title
    }
    nextToken
  }
 }
}

код:

const initialState = { 
    firstName: '',
    lastName: '',
    title:''
}
const [formState, setFormState] = useState(initialState)

const [contactInfos, setContactInfos] = useState([])

async function addContactInfo() {
    try {
      const contactInfo = { ...formState }
      setContactInfos([...contactInfos, contactInfo])

      await API.graphql(graphqlOperation(updateInformation, 
 {input: { hasBooks: contactInfo, id:caseID}}))
    } catch (err) {
      console.log('error creating todo:', err)
    }
  }

1 Ответ

0 голосов
/ 07 мая 2020

требуется соединение «один ко многим» с помощью клавиши @

type Information @model @searchable {
id: ID!
firstName: String!
lastName: String!
phoneNumber: Int
password: Int
timestamp:String!
books: [Books] @connection (keyName:"byInformation", fields:["id"])


}

type Books @model 
@key (name:"byInformation", fields:["informationID"]) {
id: ID!
informationID:ID!
firstName: String!
lastName: String!
title: String!
}

, а затем создать информацию:

    const initialState = { 
    firstName: '',
    lastName: '',
    title:'',
    informationID: caseID
    }


 const [contactInfos, setContactInfos] = useState([])

 async function addContactInfo() {
    try {
      const contactInfo = { ...formState }
      setContactInfos([...contactInfos, contactInfo])

      await API.graphql(graphqlOperation(createBooks, {input: 
 contactInfo}))
    } catch (err) {
      console.log('error creating todo:', err)
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...