Я новичок в 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
? Кажется, это работает нормально, но я не знал, открываю ли я себя для проблем в будущем, следуя этой технике в других обстоятельствах.
Если это так, то мне было любопытно, почему доступ к parent.added
в ToDo.added
резолвере не запускает какой-то «бесконечный цикл», то есть когда вы обращаетесь к полю parent.added
, он не смотрит на преобразователь для разрешить это поле, которое обращается к полю parent.added
и так далее. (Я думаю, это достаточно умно, чтобы этого не делать?)