У меня сейчас есть страница с динамически созданной формой.У меня возникают проблемы с пониманием того, как манипулировать состоянием и запросом GraphQL для обработки вложенных запросов.
В моей нынешней реализации кажется, что она не может создавать какие-либо новые записи.Я хочу создать 1 «цель» с несколькими подчиненными «addr», привязанными к ней в одной мутации.
Это определения состояний:
state = {
name:'',
addr:[{
mobilepkg:'',
target_url:'',
target_ip: '',
idCars:[]
}],
category:'',
date: '',
location:''
}
Обработчик для графика:
handleTarget = async e => {
e.preventDefault()
const { name,
target_url,
target_ip,category,
mobilepkg,date,location } = this.state
let idCars = this.state.idCars
let adras = this.state.addr
await this.props.createTargetMutation({
variables: {
data: {
name,
addr:{
create:
[{
target_url,
target_ip,
mobilepkg,
cars: {
connect: idCars
},
}]
},
date,
location,
category
}
}
})
this.props.history.replace('/targets')
}
}
Моя мутация создания
const CREATE_DRAFT_MUTATION = gql`
mutation CreateTargetMutation($data: TargetCreateInput!) {
createTarget(data: $data) {
id
name
addr
category
}
}
`
Модель данных GraphQL
type Target {
id: ID! @unique
name: String!
addr: [Addr!]!
category: String!
date:String!
location:String!
}
type Addr {
id: ID! @unique
target_url:String!
target_ip:String!
mobilepkg:String!
cars: [Car!]!
}
Как поместить состояние ReactJS с вложенным массивом в GraphQL?PS: я новичок в GraphQL и ReactJS.
РЕДАКТИРОВАТЬ: На игровой площадке я могу создавать свои предметы, но это не работает в моем реальном приложении.
mutation CreateTargetMutation($data: TargetCreateInput!) {
createTarget(data: $data) {
id
name
addr{
target_ip
target_url
mobilepkg
cars{
id
}
}
category
date
location
}
}
{
"data": {
"name":"testerquery",
"addr": {
"create": {
"target_ip":"123",
"target_url":"123",
"mobilepkg":"asd",
"cars":{"connect":{"id":"cjs3yd83u004a0781jffzaqqr"}}
}
},
"category":"simple",
"date":"2019-03-12",
"location":"kl"
}
}