0
私はGraphQLを公式websiteで学んでいます。ノードGraphQLはAPIからヌルデータを解決します
このコードのmy graphqlの目的は、既存のREST APIのラッパーと同じです。
GET: /people/:id
RESPONSE:
{
"person": [
{
"id": "1",
"userName": "mark1",
"firstName": "Mark",
"lastName": "Zuckerberg",
"email": "[email protected]",
"friends": [
"/people/2",
"/people/3"
]
}
]
}
と、この次のコードは、私のgraphqlスキーマである
import {
GraphQLList,
GraphQLObjectType,
GraphQLString,
GraphQLSchema
} from "graphql";
import fetch from "node-fetch";
const BASE_URL = "http://localhost:5000";
function getPersonByURL(relativeUrl) {
return fetch(`${BASE_URL}${relativeUrl}`)
.then(res => res.json())
.then(json => json.person);
}
const PersonType = new GraphQLObjectType({
name: "Person",
type: "Somebody",
fields:() => ({
firstName: {
type: GraphQLString,
resolve: person => person.firstName
},
lastName: {
type: GraphQLString,
resolve: person => person.lastName
},
email: {
type: GraphQLString
},
id: {
type: GraphQLString
},
userName: {
type: GraphQLString
},
friends: {
type: new GraphQLList(PersonType),
resolve: (person) => person.friends.map(getPersonByURL)
}
})
});
const QueryType = new GraphQLObjectType({
name: "Query",
description: "the root of all queries",
fields:() => ({
person: {
type: PersonType,
args: {
id: { type: GraphQLString }
},
resolve: (root, args) => getPersonByURL(`/people/${args.id}`)
}
})
});
export default new GraphQLSchema({
query: QueryType
});
私はGraphiql
を使用して要求を実行したとき、それは、各フィールドにnullを返さ:、私はすでにこの応答でのREST APIを持っていることを行うには 。 私は自分のjsonレスポンスをどのように表しているのか、残りのAPIからjsonレスポンスにどのようにアクセスするのか間違っていると思います。
これらはgraphiql
REQUEST
{
person(id: "1") {
firstName
}
}
RESPONSE
{
"data": {
"person": {
"firstName": null
}
}
}
からの要求と結果であるあなたは、任意のヒントを使用して助けてくださいことはできますか?
// ...
firstName: {
type: GraphQLString,
resolve: person => JSON.stringify(person)
},
// ...
次のクエリを実行した後:私は趣旨にごJSONを入れて、怒鳴るようにコードを変更している問題を見つけるために
はい助けてくれてありがとう:ここ
動作するコードとGraphQLランチパッドです:あなたは、各フィールドのリゾルバやルート型レゾルバのいずれかの配列のラップを解除する必要があります – lloistborn