我正在尝试使用MongoDB
在GraphQL
中存储UNIX时间戳,但它认为GraphQL有一个限制来处理整数。请参阅以下突变:
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;
}
}
结果:
"errors": [
{
"message": "Int cannot represent non 32-bit signed integer value: 1499484833027",
"locations": [
{
"line": 14,
"column": 5
}
],
"path": [
"addUser",
"creationTimestamp"
]
}
我目前在类型定义的字段上使用GraphQLInteger
:
creationTimestamp: {
type: GraphQLInt
}
如果GraphQLInt
中没有更大的GraphQL
可用,我该如何解决这种情况?
答案 0 :(得分:7)
您最好使用GraphQL Date之类的自定义标量。还有一个“长”类型可用here。或者你可以推出自己的自定义类型;阿波罗here就是一个很好的例子。
如果您很好奇为什么GraphQL不支持更大的内容,您可以查看this issue on Github。
答案 1 :(得分:0)
⚠️不推荐...
...但是如果您想要快速修复(可能您没有时间实现自定义标量),您可以使用 Float
类型而不是 Int
。