【发布时间】:2019-09-21 00:54:59
【问题描述】:
我是 Prisma/GraphQL 的新手。我正在编写一个简单的 ToDo 应用程序并使用 Apollo Server 2 和 Prisma GraphQL 作为后端。我想将我的 createdAt 字段从数据模型转换为前端更有用的东西,比如 UTC 日期字符串。我的想法是转换存储的值,即 DateTime。
我的datamodel.prisma 具有以下 ToDo 类型
type ToDo {
id: ID! @id
added: DateTime! @createdAt
body: String!
title: String
user: User!
completed: Boolean! @default(value: false)
}
added 字段是一个 DataTime。但在我的schema.js 中,我将该字段列为字符串
type ToDo {
id: ID!
title: String,
added: String!
body: String!
user: User!
completed: Boolean!
}
然后我在我的解析器中转换它
ToDo: {
added: async (parent, args) => {
const d = new Date(parent.added)
return d.toUTCString()
}
这样可以吗?也就是说,datamodel 和schema 中的同一字段有不同的类型?它似乎工作正常,但我不知道在其他情况下遵循这种技术是否会让自己在路上遇到麻烦。
如果是这样,我很好奇的一件事是为什么在 ToDo.added 解析器中访问 parent.added 不会启动某种“无限循环”——也就是说,当您访问 parent.added 字段时它不需要解析器来解析该字段,它访问parent.added 字段,依此类推。 (我想它足够聪明,不会那样做?)
【问题讨论】:
标签: graphql apollo-server prisma prisma-graphql