对象对象的 GraphQL 模式/解析器是啥样的?
Posted
技术标签:
【中文标题】对象对象的 GraphQL 模式/解析器是啥样的?【英文标题】:What does the GraphQL schema/resolver look like for an object of objects?对象对象的 GraphQL 模式/解析器是什么样的? 【发布时间】:2017-02-14 09:10:39 【问题描述】:数据
user_id: 'abc',
movies:
'111':
title: 'Star Wars 1'
,
'112':
title: 'Star Wars 2'
架构和解析器是什么样的?
这是我最好的尝试,但我从未见过这样的例子,所以真的不确定。
架构
type User
user_id: String
movies: Movies
type Movies
id: Movie
type Movie
title: String
解析器
User:
movies(user)
return user.movies;
,
Movies:
id(movie)
return movie;
【问题讨论】:
【参考方案1】:您仍然缺少 Query 类型,它告诉 GraphQL 您的查询可以从哪里开始。比如:
type Query
user(id: String): User
movie(id: String): Movie
另外,我认为对于你的电影,你应该有 [Movie]
而不是 Movies
类型,然后是 id
在里面。所以摆脱你的 Movies
类型,然后这样做:
type User
id: String
movies: [Movie]
type Movie
id: String
title: String
【讨论】:
不 [电影] 期望数据是对象数组:[id: 111, title:'Star Wars 1', id: 112, title:'Star Wars 2 ']?我认为最好将电影存储为一个对象,并以它们的 id 作为键,所以如果我通过 id 删除电影将是 O(1),而不是遍历数组以将其删除 O(n)。想法?有没有办法用一个对象来做到这一点,例如电影? 你的数据库表示可以是任何你想要的。将其存储为 ID 列表是有意义的。但是在 User.movies 解析器中,您可以通过获取这些 ID 的电影来将它们转换为实际的电影对象(但您不必这样做)。 GraphQL 架构不应该受你在数据库中存储方式的影响,它应该主要由前端需求驱动。以上是关于对象对象的 GraphQL 模式/解析器是啥样的?的主要内容,如果未能解决你的问题,请参考以下文章
在 graphql-yoga 中返回枚举的解析器函数是啥样的?