如何解决如何从查询中检索 Apollo Client 中的日期字段作为日期而不是字符串?
使用以下graphql:
scalar Date
type MyModel {
id: ID!
date: Date!
}
query MyModels {
myModels {
id
date
}
}
type Query {
myModel: [MyModel!]
}
和解析器:
import { DateTimeResolver } from 'graphql-scalars'
const resolvers = {
// Scalars
Date: DateTimeResolver,myModels: async () => {
return await context.user.getMyModels()
}
}
我的查询返回 date: "2021-02-07T06:58:51.009Z"
。是否可以让 Apollo Client 将其转换为 Date 对象?
解决方法
使用 apollo-link-scalars 计算出来:
import {
ApolloClient,InMemoryCache,HttpLink,ApolloLink,} from '@apollo/client'
import introspectionResult from 'shared/gql/generated.schema.json'
import { buildClientSchema,IntrospectionQuery } from 'graphql'
import { withScalars } from 'apollo-link-scalars'
import { DateTimeResolver } from 'graphql-scalars'
const schema = buildClientSchema(
(introspectionResult as unknown) as IntrospectionQuery
)
const httpLink = new HttpLink({
uri: 'http://localhost:4000',credentials: 'include',})
const typesMap = {
DateTime: DateTimeResolver,}
const link = ApolloLink.from([
(withScalars({ schema,typesMap }) as unknown) as ApolloLink,httpLink,])
function createApolloClient() {
return new ApolloClient({
ssrMode: typeof window === 'undefined',link,// TODO: Save and hydrate from localStorage
cache: new InMemoryCache(),// Necessary to pass the session cookie to the server on every request
credentials: 'include',})
}
我查看了生成的架构,发现标量被称为 DateTime
而不是 Date
,因此我将 typeMap
更改为 DateTime: DateTimeResolver
并且它正在工作。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。