J'essaie de stocker un horodatage UNIX dans MongoDB
en utilisant GraphQL
, mais il semble que GraphQL a une limite pour gérer les entiers. Voir la mutation ci-dessous:
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;
}
}
Résultat:
"errors": [
{
"message": "Int cannot represent non 32-bit signed integer value: 1499484833027",
"locations": [
{
"line": 14,
"column": 5
}
],
"path": [
"addUser",
"creationTimestamp"
]
}
J'utilise actuellement GraphQLInteger
pour ce champ sur la définition de type:
creationTimestamp: {
type: GraphQLInt
}
Comment puis-je résoudre cette situation s'il n'y a pas de GraphQLInt
plus grand disponible dans GraphQL
?
Vous feriez probablement mieux d'utiliser un scalaire personnalisé comme Date GraphQL . Il existe également un type "Long" ici . Ou vous pouvez rouler votre propre type personnalisé; il y a un excellent exemple d'Apollo ici .
Si vous êtes curieux de savoir pourquoi GraphQL ne supporte rien de plus gros, vous pouvez vérifier ce problème sur Github .