Saturday, May 11, 2024
 Popular · Latest · Hot · Upcoming
120
rated 0 times [  122] [ 2]  / answers: 1 / hits: 33554  / 7 Years ago, sat, july 8, 2017, 12:00:00

I´m trying to store a UNIX timestamp in MongoDB using GraphQL, but it seens that GraphQL has a limit to handle integers. See the mutation below:



const addUser = {
type: UserType,
description: 'Add an user',
args: {
data: {
name: 'data',
type: new GraphQLNonNull(CompanyInputType)
}
},
resolve(root, params) {

params.data.creationTimestamp = Date.now();

const model = new UserModel(params.data);
const saved = model.save();

if (!saved)
throw new Error('Error adding user');

return saved;
}
}


Result:



  errors: [
{
message: Int cannot represent non 32-bit signed integer value: 1499484833027,
locations: [
{
line: 14,
column: 5
}
],
path: [
addUser,
creationTimestamp
]
}


I´m currently using GraphQLInteger for this field on type definition:



creationTimestamp: { 
type: GraphQLInt
}


How can I solve that situation if there is no larger GraphQLInt available in GraphQL ?


More From » mongodb

 Answers
73

GraphQL doesn't support integers larger than 32 bits as the error indicates. You're better off using a custom scalar like GraphQL Date. There's also a "Long" type available here. Or you could roll your own custom type; there's a great example from Apollo here.


If you're curious why GraphQL does not support anything bigger, you can check out this issue on Github.


[#57169] Thursday, July 6, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kyla

Total Points: 77
Total Questions: 108
Total Answers: 111

Location: Grenada
Member since Mon, May 8, 2023
1 Year ago
;