2016-05-12 4 views
5

У меня есть очень простая модель с post, что встраивает несколько commentsgraphql - использовать запросы в мутациях - создать вложенный объект

Я задавался вопросом, как я должен сделать мутацию, чтобы добавить новый comment к post

Как я уже запросы определены, чтобы получить обратно post с заданной id, я хотел, чтобы попытаться иметь следующий синтаксис мутации рабочий

mutation { 
    post(id: "57334cdcb6d7fb172d4680bb") { 
    addComment(data: { 
     text: "test comment" 
    }) 
    } 
} 

, но я не могу найти способ заставить его работать. Даже если я вхожу в мутацию, тип вывода является post addComment рассматривается как поле post должно иметь.

У вас есть идеи?

Благодаря

+0

Как выглядит ваша мутация на стороне сервера? –

ответ

0

Я мог бы быть неправильно, но вы можете просто создать отдельный updatePost мутацию, которая принимает идентификатор сообщения в качестве аргумента

type Post { 
    comments: [ Comment ] 
} 

input PostInput { 
    comments: [ CommentInput ] 
} 

type Mutation { 
    updatePost(id: ID!, input: PostInput): Post 
} 

updatePost мутация здесь имеет идентификатор post и обновленный объект post в качестве аргументов и возвращает тип Post. Так что я хотел бы использовать это так:

mutation { 
    updatePost(id: '1234', input: { comments: []) { 
    id 
    } 
} 

Надеется, что это помогает!

+0

На самом деле это не совсем то, что я хочу, поскольку то, что вы предлагаете, заменит все, что есть в комментариях по тому, что вы предоставляете. Мне нужен способ использовать существующую мутацию в мутации. Спасибо в любом случае! –

0

Возможно, вы могли бы создать мутацию addComment, по которой вы передадите сообщение id, а затем вернете сообщение.

type Mutation { 
    addComment(postId: ID!, input: CommentInput): Post 
}