2016-09-27 3 views
4

私はユーザーと投稿の関係を持っています。これが私がユーザー投稿に問い合わせる方法です。GraphQLはサブの解決にargsを渡します

const UserType = new GraphQLObjectType({ 
    name: 'User' 
    fields:() => ({ 
    name: { 
     type: GraphQLString 
    }, 
    posts: { 
     type: new GraphQLList(PostType), 
     resolve(parent, args , { db }) { 
     // I want to get here the args.someBooleanArg 
     return someLogicToGetUserPosts(); 
     } 
    } 
    }) 
}); 

メイン・クエリは、次のとおりです。

const queryType = new GraphQLObjectType({ 
    name: 'RootQuery', 
    fields: { 
    users: { 
     type: new GraphQLList(UserType), 
     args: { 
     id: { 
      type: GraphQLInt 
     }, 
     someBooleanArg: { 
      type: GraphQLInt 
     } 
     }, 
     resolve: (root, { id, someBooleanArg }, { db }) => { 
     return someLogicToGetUsers(); 
     } 
    } 
    } 
}); 

問題はのUserTypeポストの解決関数の引数である私は、サブにメインクエリから引数を渡すか、どのように空のオブジェクトである機能を解決します?

答えて

4

ルートクエリを解決するときに、オブジェクト割り当てを使用して、返されたユーザーオブジェクトに引数を添付できます。 次に、ユーザー型で、引数を根の値(resolve関数の最初の引数)から解決します。

例:

const queryType = new GraphQLObjectType({ 
 
    name: 'RootQuery', 
 
    fields: { 
 
    users: { 
 
     type: new GraphQLList(UserType), 
 
     args: { 
 
     id: { 
 
      type: GraphQLInt 
 
     }, 
 
     someBooleanArg: { 
 
      type: GraphQLInt 
 
     } 
 
     }, 
 
     resolve: (root, { id, someBooleanArg }, { db }) => { 
 
     return Promise.resolve(someLogicToGetUsers()).then(v => { 
 
      return Object.assign({}, v, { 
 
       someBooleanArg 
 
      }); 
 
     }); 
 
     } 
 
    } 
 
    } 
 
}); 
 

 
const UserType = new GraphQLObjectType({ 
 
    name: 'User' 
 
    fields:() => ({ 
 
    name: { 
 
     type: GraphQLString 
 
    }, 
 
    posts: { 
 
     type: new GraphQLList(PostType), 
 
     resolve(parent, args , { db }) { 
 
     console.log(parent.someBooleanArg); 
 
     return someLogicToGetUserPosts(); 
 
     } 
 
    } 
 
    }) 
 
});

+0

あなたは一例を示してくださいすることができますか? –

+0

ofcourse、added。 :) – HagaiCo

+5

レスポンスオブジェクトを変更する代わりにサブクエリに "args"として渡すネイティブな方法はありませんか? – AlejandroC

関連する問題