nodejs timestampでgraphql int型はエラーだった話
背景
nextjs examplesを試していた時に、timestamp値をGraphql Intで定義してあり、エラーとなったための対応。
原因
GraphqlのInt型は、A signed 32‐bit integer.
となっており、Date.now()を利用した場合に32-bitを超えてしまい、下記のようなエラーがでる。
"message": "Int cannot represent non 32-bit signed integer value: XXX",
% Date.now()
1730166391048
1. 対応手段
1-1. Int型からFloat型に変更する
schema.graphql
type User {
id: ID!
email: String!
createdAt: Int!
}
を
schema.graphql
type User {
id: ID!
email: String!
createdAt: Float!
}
に変更する
1-2. timestamp型からString型に変更する
schema.graphql
type User {
id: ID!
email: String!
createdAt: String!
}
sample.ts
new Date(now).toISOString()
1-3. Cutom Scalar型を作成する
DateTime型を利用なども可能です。