头图

写在前面

曾经想着在手机上看一些属性之类的兼容性,就用了 caniuse 这个网站的数据源做了一个简化版的小程序,不过使用率非常低,于是一直想着换成另外一个工具来玩。然后很巧合的事情是,在一次跟好友聚餐的时候聊到了一个打牌记分的话题,于是就有了现在这个小程序。

功能很简单,就是记录下每次的分数,最后结算,根据倍率算出最终的得分,就像这样的一个结果。

有了这个小工具,不论是在麻将桌上还是牌局上都可以不用去考虑找笔和纸,或者找其他道具来代替记分了,只需要把每一局的分数记录下来。

而且还可以把当前的房间发给好友,或者扫码的方式加入一起记分,最简单的就是一个人自己记分,只需要手动输入名字就可以了。手动输入的方式因为没有头像,会取名字的第一个字符。

在第一个版本的时候,没有个人中心,然后被嫌弃广告,于是就加了一个个人中心页面,再加了一个去广告的功能。😔广告也只是为了把云开发中涉及到的费用给支撑住,不赚钱的玩意。

回归正题

还是回到正题说说这次开发中遇到的一个坑吧,这个坑让我十分意外。

小程序陆陆续续写过好些个了,不过云开发模式这还是第一次。对于云开发的好处主要还是鉴权相关的处理以及不需要考虑域名(要备案挺麻烦的)。

对于云函数、调用之类的,官方文档以及网络上有一大片的文章可以参考,这个没啥可说的。而要说的是,当我上传了小程序之后,通过 mp 后台去提交审核时,突然发现小程序开发工具中的数据都不见了。

是的,记分的时候是通过官方的一个 watch() 方法监听的,只要数据有更新就会同步,其实也就是 socket 而已。

但是为什么数据会不见了呢,而且好像只是不见了部分数据,赶紧通过开发工具的云开发入口去看一下,结果发现 member 字段中的数组变成空了。

十分不解,幸好有导出备份,不然数据就丢失了。正常的情况下,部分用户相关的数据会通过 member 字段来展示的。

刚开始以为是自己的代码上有问题,但回想了一下,在数据丢失之前,好像也没做什么操作,只有在 mp 后台提交审核而已。难道是跟现在用户隐私相关操作加强有关?不然怎么会只是丢失 member 这个字段呢。

并且后来多次尝试,每次都会必现这个 member 字段被清空的情况。

思前想后,问题就是在提审这个步骤上,于是问了一下度娘,结果发现了这么一个帖子。

这个 2020 年 1 月的帖子让我明白了,数据库的安全规则问题。因为这个记分的规则以及自己对数据库字段设计的不了解,现在只能想办法通过其他方式去处理一下。

  • 修改数据库,重新调整每个字段的关联性;
  • 代码方面同时也要处理一下,在保证操作流程的基础上,加强用户权限方面的处理;
  • 啥也不改,每次提审的时候先导出数据,提审完成之后再重新导入数据,反正这个小工具修改发版次数很少;
  • 还是啥也不改,在提审之前把安全规则换一个默认的,严格点的,提审完之后再换回来;

总之呢,问题根源是找到了,处理方法也有,但总感觉,权限放开一点,提审代码也不至于把某个字段所有都清空吧。简而言之,只能怪自己能力菜,要不然怎么回踩这个坑呢。

最后

小程序整体已经完成了,那么会有人用吗?😆


林小志
4.4k 声望1.8k 粉丝