2016-10-05 10 views
0

データオブジェクトのオブジェクトのGraphQLスキーマ/リゾルバはどのように見えますか?

{ 
    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; 
    } 
} 

答えて

0

あなたはまだあなたのクエリを開始することができますどこGraphQLを伝えるクエリの種類を、逃しています。ような何か:

type Query { 
    user(id: String): User 
    movie(id: String): Movie 
} 

も、私はあなたの映画のために、あなたの代わりにMoviesタイプの[Movie]を持つ必要がありますし、それの内部idと思います。だからあなたのMoviesタイプを取り除くと、ちょうどこの操作を行います。[{ID:111、タイトル:「スターウォーズ1」}

type User { 
    id: String 
    movies: [Movie] 
} 
type Movie { 
    id: String 
    title: String 
} 
+0

は、[動画]は、データがオブジェクトの配列であることを期待していません、{ id:112、title: 'スターウォーズ2'}]?私は、それはO(n)を削除するために配列をループするのではなく、O(1)であるとidでムービーを削除する場合は、キーとしてオブジェクトのIDとしてオブジェクトを格納する方が良いと思った。思考?例えばオブジェクトでこれを行う方法はありますか? {映画}代わりに? – kayla

+0

あなたのDB表現はあなたが望むものであれば何でも構いません。それをIDのリストとして格納するのが理にかなっています。しかし、User.movi​​esリゾルバでは、これらのIDのムービーを取得することで、それらを実際のムービーオブジェクトに変換できます(ただし、そうする必要はありません)。 GraphQLスキーマは、DBに物事を格納する方法によって影響を受けるべきではありません。主にフロントエンドのニーズによって駆動されるべきです。 – helfer

関連する問題