如何让GraphQL查询返回随机28个商品而非默认前28个?
解决方案
你使用的是Shopify GraphQL API的话,只需要在products查询参数中添加sortKey: RANDOM即可实现从符合筛选条件的商品池中随机返回指定数量的商品,修改后的查询如下:
query productFetch($first: Int, $after: String, $query: String, $randomSeed: Int) { products(first: $first, after: $after, query: $query, sortKey: RANDOM, seed: $randomSeed) { edges { node { priceRange { minVariantPrice { amount currencyCode } } title images(first: 1) { edges { node { transformedSrc(maxWidth: 300) } } } } cursor } pageInfo { hasNextPage } } }
调用注意事项
- 调用时传入
first: 28即可直接拿到符合你筛选条件的28个随机商品,不需要改动原有筛选逻辑 - 新增的
$randomSeed是可选参数:如果你希望每次请求都返回不同的随机商品集合,每次调用时传入一个随机生成的整数作为randomSeed的值即可;如果需要固定随机排序(比如同一会话内展示相同的随机列表),传入固定的seed值即可 - 如果你不需要分页功能,可以直接删除
$after参数和返回结果中的cursor、pageInfo相关字段,精简查询
如果是其他厂商的GraphQL商品查询API,没有内置的随机排序参数,可以先查询符合筛选条件的所有商品ID,在前端/后端随机抽取28个ID后,再批量查询这28个商品的详情即可。
内容的提问来源于stack exchange,提问作者Huma
相关产品推荐
相关产品推荐

