我正在使用 GraphQL、Apollo Express 和 MongoDB 与 Mongoose 构建一个小型博客。
目前,文章是通过他们的 ID 获取的,访问者可以在这里浏览 ID 为“123”的文章:example.com/articles/123
相反,我想使用 slug,因此访问者可以访问 example.com/articles/same-article-as-above
到目前为止我的解析器:
import { gql } from 'apollo-server-express';
export default gql`
extend type Query {
articles: [Article!]
article(id: ID!): Article
}
type Article {
id: ID!
slug: String!
title: String!
desription: String!
text: String!
}
`;
我可以添加另一个查询:
articleBySlug(slug: String!): Article
这将工作得很好。但是,这对我来说看起来不是很优雅,我觉得我缺少一些基本的理解。每次我尝试按标题、文本、描述或其他内容获取文章时,我真的必须向解析器添加新查询吗?我最终会得到很多查询,例如“articleByTitle”、“articleByDate”等等。有人可以给我一个提示,一个例子或一些最佳实践(或者只是确认我确实必须添加越来越多的查询☺)?