Есть два типа данных, свойства которых ссылаются друг на друга:
type Query {
posts: [Post]
user(id: Int!): User
}
type Post {
id: Int
message: String
author: User
}
type User {
id: Int
name: String
posts: [Post]
}
Как должны выглядеть обработчики что бы следующий запрос правильно отрабатывал?
{
posts {
id
message
author {
id
name
posts {
id
message
author {
id
name
}
}
}
}
}
Сейчас есть следующая реализация, но user.posts всегда пуст и следовательно запрос выполняется неверно.
const posts = [{ id: 0, message: 'foo', author: 0 }]
const users = [{ id: 0, name: 'bar', posts: [0] }]
const rootValue = {
posts: () => {
return posts
.map(post => ({
id: post.id,
message: post.message,
author: rootValue.user({ id: post.author })
}))
},
user: ({ id }) =>
users
.filter(user => user.id === id)
.map(user => ({ id: user.id, name: user.name, posts: [] }))[0]
}