从 Graphcool 获取随机元素?
Get random element from Graphcool?
是否可以 return 来自 Graphcool 后端的随机 graphql 元素?如果是这样,如何做到这一点?
或者,关于如何为 Graphcool 后端创建自定义查询的任何提示?
最好的方法是使用 API 网关 模式。
该方法的想法是在 Graphcool 的 CRUD API 之上放置一个网关服务器,从而自定义 API。使用这种方法,您将编写一个额外的 resolver function 来为您检索随机元素:
const extendTypeDefs = `
extend type Query {
randomItem: Item
}
`
const mergedSchemas = mergeSchemas({
schemas: [graphcoolSchema, extendTypeDefs],
resolvers: mergeInfo => ({
Query: {
randomItem: {
resolve: () => {
return request(endpoint, allItemsQuery).then(data => {
const { count } = data._allItemsMeta
const randomIndex = Math.floor((Math.random() * (count-1)) + 0)
const { id } = data.allItems[randomIndex]
return request(endpoint, singleItemQuery, { id }).then(data => data.Item)
})
},
}
},
}),
})
我为此创建了一个完整示例 here。如果您还有其他问题,请告诉我:)
是否可以 return 来自 Graphcool 后端的随机 graphql 元素?如果是这样,如何做到这一点?
或者,关于如何为 Graphcool 后端创建自定义查询的任何提示?
最好的方法是使用 API 网关 模式。
该方法的想法是在 Graphcool 的 CRUD API 之上放置一个网关服务器,从而自定义 API。使用这种方法,您将编写一个额外的 resolver function 来为您检索随机元素:
const extendTypeDefs = `
extend type Query {
randomItem: Item
}
`
const mergedSchemas = mergeSchemas({
schemas: [graphcoolSchema, extendTypeDefs],
resolvers: mergeInfo => ({
Query: {
randomItem: {
resolve: () => {
return request(endpoint, allItemsQuery).then(data => {
const { count } = data._allItemsMeta
const randomIndex = Math.floor((Math.random() * (count-1)) + 0)
const { id } = data.allItems[randomIndex]
return request(endpoint, singleItemQuery, { id }).then(data => data.Item)
})
},
}
},
}),
})
我为此创建了一个完整示例 here。如果您还有其他问题,请告诉我:)