reactjs GraphQL错误:应为类型Int,Int不能表示非整数值

7tofc5zh  于 2022-12-26  发布在  React
关注(0)|答案(5)|浏览(211)

我目前正在使用Apollo for React学习GraphQL,我有一个问题,但无法在线找到答案:我已经完成了一个表单来发送数据给我的mongoDB,我有这样的查询:

const addContactMutation = gql`
    mutation($name: String!, $address: String!, $vat: Int!, $zip: String!, $email: String!, $contact: Int!){
        addContact(name: $name, address: $address, vat: $vat, zip: $zip, email: $email, contact: $contact){
            name
            vat
            email
        }
    }
`

然而,我的$vat$contact是大数字,当提交表单时,我收到此错误:
变量“$vat”获得无效值“232214336”;应为类型Int。Int不能表示非整数值
我应该用哪种型号?

tpxzln5u

tpxzln5u1#

232214336不是很大,最大整数是9007199254740991

console.log(Number.MAX_SAFE_INTEGER);

我认为问题在于您传递了一个字符串值"232214336",而Int值是预期值,错误为Expected type Int,因此您需要在使用parseInt()将变量传递给变体之前或之时将该值转换为整数

addContact({ variables: { vat: parseInt(vat, 10), contact: parseInt(contact, 10), ... } })
5fjcxozz

5fjcxozz2#

当数据库字段类型为整数,包含NULL值,并且GraphQL查询返回该字段时,也会发生此错误。解决此问题的一种方法是设置数据库,为整数字段提供默认值,以便在创建行时它们永远不会为NULL。

s71maibg

s71maibg3#

我以前遇到过这个问题,我通过以下方法解决了它:首先,我检查了前端中的类型顺序是否与graphql-types中的相同,然后在input表单中,我替换了:目标值依据:目标.值作为数字

qmb5sa22

qmb5sa224#

我也遇到了一个类似的奇怪的问题,因为graphql-request版本3.1.4清楚地提到了类型,但变量中不接受类型,我再次将它们Map到一个变量中,到目前为止,我的端是工作的。

const variables = {
    orderId: +orderId,
    vendorIds: vendorIds.map(id => +id),
  };
bq3bfh9z

bq3bfh9z5#

我在我的Graphql +NestJs应用程序中也遇到了同样的错误。我所做的是将图形字段类型从Int更改为Float。

相关问题