Если API всегда будет возвращать только ключи «0» и «1», вы можете просто иметь два произвольно названных поля, которые сопоставляются с ключами, возвращенными API.
const TimeSheetType = new GraphQLObjectType({
name: "TimeSheet",
fields: () => ({
zero: {
type: SheetType,
resolve: (parent) => parent['0'],
},
one: {
type: SheetType,
resolve: (parent) => parent['1'],
},
})
})
Нас другой стороны, если API мог бы возвращать ключи с именами «2», «3», «4» и т. д., лучшим вариантом было бы изменить структуру структуры данных, чтобы вместо нее использовать массив.В этом случае вы полностью опускаете TimeSheetType
и просто возвращаете List
из SheetType
с.
// An example of how you can iterate over keys and reduce an object to an array
const convertToArray = (obj) => Object.keys(obj).reduce((arr, key) => {
arr[Number.parseInt(key, 10)] = obj[key]
return arr
}, [])
// Example query returning the array of SheetType objects
const QueryType = new GraphQLObjectType({
name: "Query",
fields: () => ({
getTimeSheets: {
type: new GraphQLList(SheetType),
resolve: async () => {
const apiResponse = await getAPIResponse()
return convertToArray(apiResponse)
},
},
})
})