如何在 GraphQL 中使用时间与日期

· 约 5 分钟读完

对于前端开发者来说,处理时间和日期是非常常见的任务。而对于使用 GraphQL 的开发者来说,了解如何在 GraphQL 中使用时间和日期非常重要。

在 GraphQL 中处理时间和日期需要使用一个叫做 Scalar 的类型。Scalar 类型可以让你在 GraphQL 中描述基本类型,例如字符串、数字和日期。GraphQL 本身提供了几种内置的 Scalar 类型,例如 String、Int、Float 和 Boolean。但是,日期和时间并不是内置的 Scalar 类型,因此我们需要自己定义。

定义日期与时间

我们可以使用 GraphQLISODateTime 来定义日期和时间。它是 graphql-scalars 库中的 Scalar 类型,可以处理各种时区和时间格式。

下面是如何在 GraphQL 中定义日期和时间:

在上面的代码中,我们定义了三个 Scalar 类型:Date、Time 和 DateTime。这些类型可以用来处理日期和时间。

在 GraphQL 查询中使用日期与时间

当我们定义了日期和时间类型之后,我们可以在 GraphQL 查询中使用它们。

例如,以下是一个查询任务列表的 GraphQL 查询:

在上面的查询中,我们想要返回一个任务列表,其中每个任务包含一个 created_date 和一个 due_date。这两个字段都是日期类型。

我们可以通过以下方式来处理这些日期字段:

在上面的代码中,我们将 created_date 和 due_date 定义为 Date Scalar 类型。接着,我们定义了一个 Task 类型,其中包含了这两个日期字段。

在 GraphQL Mutation 中使用日期与时间

在 GraphQL Mutation 中,处理日期和时间跟处理查询中的日期和时间是一样的。

例如,以下是一个添加任务的 GraphQL Mutation:

在上面的 Mutation 中,我们向任务列表中添加一个新的任务,并且指定了这个任务的 created_date 和 due_date。这两个字段都是日期类型。

我们可以通过以下方式来处理这些日期字段:

在上面的代码中,我们将 created_date 和 due_date 定义为 Date Scalar 类型。我们也将这些日期字段添加到了 addTask Mutation 的参数中。

使用 GraphQLISODateTime Scalar 类型的示例代码

让我们看一下如何使用 GraphQLISODateTime Scalar 类型来处理日期和时间。我们将编写一个查询当前时间的 GraphQL 查询。

在上面的代码中,我们安装了 graphql-scalars 包,然后定义了一个 DateTime Scalar 类型。我们定义了一个包含 currentTime 查询的 Query 类型。当我们调用 currentTime 查询时,它会返回当前时间。

然后,我们创建了一个 ApolloServer,并将 GraphQLISODateTime 指定为 DateTime Scalar 类型的解析器。最后在这个服务器上监听请求并输出服务器的 URL。

通过以上示例,我们可以学习到如何在 GraphQL 中使用日期与时间,并且了解到使用 Scalar 类型可以简化这一过程。同时,通过学习 GraphQLISODateTime,我们可以了解到,为了使用其他自定义 Scalar 类型,我们需要了解它的解析器实现方式。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d6358ea941bf7134be5fe5