哈,今天终于想起来我还有个博客了!http://fanjinlong.com/2016/04/28/%E4%B8%80%E4%B8%AA%E6%85%8C%E9%87%8C%E6%85%8C%E5%BC%A0%E7%9A%84%E4%B8%AD%E5%8D%88/ 

上午11点46,我正在神游中午和媳妇出去吃什么。同事跑来说他账号底下负责的用户不能排重要级别,提示权限不够。当时我是懵比的,毕竟快吃饭了,脑子里想的都是韭菜鸡蛋饺子。一看时间离12点还一会,想着搞定了就走!(flag已立)
嗯,权限不够。容我瞧瞧代码——确实不够>_<。机智如我立马想到了两个解决办法。

1.自己账户底下的用户讲道理是可以随意改动的,这块权限加的不合适。那就需要删掉这个控制语句,然后打包上传重新部署;
2.权限不够我就加!也就是数据库里一个update的事情,还不用重新部署
我这么勤快的人,当然要选第二种了!毕竟那家东北菜馆的饺子真是好吃。于是哗哗哗连上mongodb,db.xxx.update({"xxx":"xxx"},{$set:{"卧室权限":"xxx"}});
嗯,权限那块的字符串太长了,容我复制个别人的。ctrl-c/v大法好。敲下回车,打开系统,输入用户密码验证。“用户名密码错误”。。ORZ...
怎么可能!我又没改密码,刚刚只是没看清权限的字段名,update错了一个,不过我立马就改回来了啊。wtf!眼看着时间马上就12点了。本来只是权限不够而已,这下倒好,连系统都进不去了。怎么办,冥冥中感觉饺子要离我而去了。
先解决问题吧,登录不上去,就重置一下密码。注册邮箱是同事的,这么丢人的事我怎么可能让他知道。先把数据库里的邮箱改成我的……重置,输入密码,“用户不存在”。诶???我一脸懵比。
难道是我改错库了?不可能啊,线上库就一个地址。在配置文件里看也没错。难道我把刚那条数据误删了?重新查了好多遍,没错啊,这条数据老老实实的躺在那。此时我是崩溃的,时间已经到了12点15,媳妇打电话问我咋还没到。我已经预感到危机了。
怎么办,这活计果然急不得啊,早知道当初按方案一来,现在妥妥的在菜馆吃饺子了。没办法,打日志吧。重置密码的邮件传了一个随机数验证的token参数和同事的id,我把DBCorsur根据id查到的打出来看看,一个一个对比参数。怎么就能返回null了呢。。
这么一看,问题就暴露了。我明明更新的时候数据类型是int,怎么日志打出来就是float了呢?而程序里解析都是这么来的: int xxx = Integer.parseInt(object.get("xxx").toString().trim());查出来的是float,用int转换,还所有的参数都包在一个try里面,
怪不得返回的是null。查了半天,才知道shell的js语法数值类型都是float型的,所以如果要修改数值型数据,直接修改的话Long类型可以用NumberLong(),而int用NumberInt()改的话,要是值一样mongodb是不会给你修改的。。被这个坑真是坑的莫名其妙。
终于能登录了,改了那个捣乱的参数以后,密码也不用重置了。郁闷的找到那个控制权限的地方,ctrl-D啪啪删掉。打包上传重新部署。over……
那么这个故事告诉了我几个道理呢?1.flag不能乱立 2.解决方案简单的说不定坑多 3.以后中午来活了就下午再动手(也可以引申到放假前不加新功能……除非你想加班) 4.耽误了的时间就得从别的地方补回来——比如我就在大太阳底下一路跑到了饭店。