如何在GraphQL查询中添加ID过滤条件并保留分页参数
解决方案
你使用的是Strapi v3版本的GraphQL接口,过滤参数where和分页参数limit、start属于同级参数,直接加在newsPostsConnection的入参位置即可实现按ID过滤,原有分页功能不受影响。
模板字符串拼接写法(快速适配原有代码)
// 将targetId替换为实际需要过滤的ID值 const targetId = 1 const data = await axios.post("http://localhost:1337/graphql", { query: `query { newsPostsConnection(limit: ${limit}, start: ${start}, where: { id: ${targetId} }) { values { id title body writtenBy imageUrl created_at } aggregate { totalCount } } }` })
更安全的变量传参写法(推荐)
避免模板字符串拼接带来的GraphQL注入风险,推荐通过官方标准的variables参数传递所有动态值:
const data = await axios.post("http://localhost:1337/graphql", { query: `query getNewsPosts($limit: Int, $start: Int, $filterId: ID!) { newsPostsConnection(limit: $limit, start: $start, where: { id: $filterId }) { values { id title body writtenBy imageUrl created_at } aggregate { totalCount } } }`, variables: { limit: limit, start: start, filterId: 1 // 替换为实际需要过滤的ID值 } })
常用过滤扩展
- 匹配多个ID:将过滤条件改为
where: { id_in: [id1, id2, id3] } - 排除指定ID:将过滤条件改为
where: { id_ne: 要排除的ID值 }
内容的提问来源于stack exchange,提问作者suhas bhairav
相关产品推荐
相关产品推荐

