如何查询未关联作者的Post?GraphQL Schema技术问询
查询未关联作者的Post解决方案
嘿,这个问题我之前也踩过坑!针对你给出的Schema,其实有个很直接的方法可以筛选出所有没有关联作者的Post,不用纠结id_is_null这类嵌套筛选——直接针对author字段本身做null判断就行。
方案1:直接过滤author为null的Post
如果是用GraphQL查询的话,你可以这么写:
query GetOrphanPosts { posts(where: { author: null }) { id # 这里可以加上你需要的其他Post字段 } }
如果是用Prisma Client(假设你用的是Prisma),对应的代码是:
// JavaScript/TypeScript示例 const orphanPosts = await prisma.post.findMany({ where: { author: null, }, // 可选:指定要返回的字段 select: { id: true, }, })
为什么这个可行?
你的Schema里,Post类型的author字段没有加!,说明它是可选字段——当Post没有关联任何作者时,这个字段的值就是null。所以直接针对author: null过滤,就能精准拿到所有未关联作者的Post了,不需要去嵌套筛选作者的id。
备选方案(适配旧版本工具)
如果你用的是比较旧的GraphQL API工具,可能不支持直接写author: null,那可以用NOT结合存在性判断来实现:
query GetOrphanPosts { posts(where: { NOT: { author: { id_not: null } } }) { id } }
这个逻辑是:排除掉所有author.id不为null的Post,剩下的就是没有关联作者的Post,效果和第一种方案一致。
内容的提问来源于stack exchange,提问作者Peter Albert
相关产品推荐
相关产品推荐

