午前の皆さん、私は現在GraphQLをREST APIの上に記述しています。 JSONレスポンスは、id、name、email、street、suite、city、およびzipcodeからなるオブジェクトである 'address'などの要素を含む 'user'オブジェクトであるとします。内部に複数の要素が含まれているこの「アドレス」フィールドのスキーマで、型を宣言する必要があります。私はドキュメントを見て、自分のシナリオで正しいタイプが何であるか理解できませんでした。REST APIの上にあるGraphQL
関連スキーマの抜粋は以下の通りです:
export default new GraphQLObjectType({
name: 'User',
description: 'User(s) object in JSONPlaceholder Fake API',
fields:() => ({
id: {
type: GraphQLID
},
name: {
type: GraphQLString
},
username: {
type: GraphQLString
},
email: {
type: GraphQLString
},
address: {
type: (?)
}
})
})
以下は、私がターゲットに私のJSON APIです。
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "[email protected]",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
}
私は別のオブジェクトを作成し、それだけで特定の「アドレス」オブジェクトを取得するためにリゾルバを作成すると思うが、それは私が二回照会していますを意味します。私はこれを避けるためにいくつかの回避策があるかもしれないと仮定します。
ありがとうございます!
-
あなたのコードは次のようになります。しかし、奇妙なことに、キャッシュメカニズムは、load()メソッドやDataLoaderオブジェクト内のHTTPリクエストで渡された引数に基づいて同様の要求を検出できますか? 私の意見では、load()メソッドの中括弧内の引数を渡して、HTTPリクエストで修正するためにアンパックするか、単に読み込み専用のDLオブジェクトを返す引数を受け付ける関数を呼び出します特定の(そして操作された)引数?どの方法をお勧めしますか? –
ローダーをかなり使用しています。私たちがオブジェクトを渡すために複数のパラメーターを渡す必要がある場合は、私たちのチームで(中かっこでロードする)これを行う場合は、デフォルトでcacheKeyFnを提供することが重要です。これは、値の比較ではなくIDの比較を使用します。キーが同じ順序で提供される小さなオブジェクトの場合、 'cacheKeyFn:JSON.stringify' –