私はちょうど企業とユーザーを関連付ける作業をしていました。ユーザー タイプで新しい会社フィールドを作成し、それが type であることを伝えましたCompanyType
。
次のステップは、このプロパティに解決関数を定義して、GraphQL が特定のユーザーに関連付けられている会社を見つける方法を認識できるようにすることでした。
したがって、ここでの私の目標は、ユーザーを取得して、関連する会社を見つけることです。GraphQL に、ユーザーから会社に移動する方法を教えたいと考えています。
ここに私が書いたコードがあります:
const graphql = require('graphql');
const axios = require('axios');
const { GraphQLObjectType, GraphQLString, GraphQLInt, GraphQLSchema } = graphql;
const CompanyType = new GraphQLObjectType({
name: 'Company',
fields: {
id: { type: GraphQLString },
name: { type: GraphQLString },
description: { type: GraphQLString }
}
});
const UserType = new GraphQLObjectType({
name: 'User',
fields: {
id: { type: GraphQLString },
firstName: { type: GraphQLString },
age: { type: GraphQLInt },
company: {
type: CompanyType,
resolve(parentValue, args) {
console.log(parentValue, args);
}
}
}
});
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { id: { type: GraphQLString } },
resolve(parentValue, args) {
return axios
.get(`http://localhost:3000/users/${args.id}`)
.then(res => res.data);
}
}
}
});
module.exports = new GraphQLSchema({
query: RootQuery
});
私の期待console.log(parentValue, args);
は、コンソールでこの出力を取得することでした:
`{ id: '23', firstName: 'Bill', age: 20, companyID: '1' } {}`
私がgraphiQLに行き、これを要求する再生ボタンを押した後:
{
user(id: "23") {
firstName
company {
id
}
}
}
代わりに、コンソールで得た出力は次のとおりです。
{ id: '23', firstName: 'Bill', age: 20 } {}
このデータを取得してこの会社のプロパティに解決関数を設定する方法を GraphQL に教えることに失敗した理由はわかりません。助けてください。