0
上午好,我目前正在研究GraphQL的REST API之上。假設JSON響應是一個包含id,名稱,電子郵件和「地址」這樣的元素的對象「用戶」,該地址是由街道,套件,城市和郵編組成的對象。我應該如何在這個'地址'字段的模式中聲明類型,其中包含多個元素。我已經看過文檔,並且無法理解我的場景的正確類型。RQL 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非常重要,因爲它默認使用標識比較而不是值比較。對於鍵以相同順序提供的小對象,它可以像設置'cacheKeyFn:JSON.stringify'一樣簡單 –