MongoDB存储手机号码11位数失败,超十位数会自动清0,Integer越界

这是我在做一个app商城出现的问题,下面简单描述一下,我做的流程。

  1. 报错原因:错误是我在前端输入手机号码注册时发现存储不了,存储失败

  2. 然后我就想是不是数据库除了问题,于是我打开native,mongodb数据库
    MongoDB存储手机号码11位数失败,超十位数会自动清0,Integer越界
    因为我i在测试的时候并没有输入过完整的手机号码11位数,我测试都是简单的输入几位而已。但是当我去面试的时候,给老板展示的时候,老板也正经,按正常流程,输入用户名,自己的手机号码(这个标出来,待会谈到) 等等;这时候注册完跳转到登陆时就出现问题了,登陆失败,实际是因为手机号码 越界(圈出来,会考) 导致存储失败,幸亏老板也不在意这个小细节,因为当时我是不知道哪里出现问题的,回来研究了一会才发现的。

  3. 于是回来后我在native里的手机号码栏输入11位数后,果然。。。
    MongoDB存储手机号码11位数失败,超十位数会自动清0,Integer越界
    MongoDB存储手机号码11位数失败,超十位数会自动清0,Integer越界

  4. 过程我就不废话了!后来我看了我的后端,采用的是Integer的方式来存储手机号码,于是我去看了Integer的范围:

Integer最小值:-2147483648
Integer最大值:2147483647

明显Integer仅支持10整数,手机号码为11位,这时候就超出了范围,这就叫 越界。 我们只需要在后端把Integer类型改成Long

这是我原来写的

MongoDB存储手机号码11位数失败,超十位数会自动清0,Integer越界

修改成Long就可以接收19位以内的整数了

MongoDB存储手机号码11位数失败,超十位数会自动清0,Integer越界

Long类型范围:

Long最小值:-9223372036854775808
Long最大值:9223372036854775807
支持19位整数

有什么不对的欢迎指出哦。。。