原创 lightcity 光城 2020-12-23

聊聊小程序开发那些坑那些事

我个人是后端开发,或许很多人看到小程序开发比较诧异,这里解释一下,最近有要开发小程序的东西,于是自己学习了一下,将学习经验分享出来,ok,我们进入今天正题,自己开发小程序欲望是在2017-2018年左右,那时候水平比较菜,要开发小程序与公众号开发,不仅仅要写前面的js,还要写后端服务,想想都头大,果然技术的革新以及自己的成长,在半个月前尝试了一波小程序开发,从0到1写了个成品出来,功能来说不算太复杂,但是涉及的逻辑却比较多,在开发过程中也碰到过很多问题,特别是按照了官方文档那样做,还是会出问题,所以很多人吐槽文档写的不好。今天这篇文章从技术及自己踩坑角度来盘点一些自己遇到的一些坑,希望帮助入坑小程序开发的道友门,共同成长与前进。

现在小程序开发模式使用的是云开发,云数据库+云函数,实际上可以理解为腾讯云提供的云数据库,以及给你一些上传云函数接口,写好后上传到后台即可,不用像原生那样自己搞个服务器之类的部署一通,这确实大大提升了开发效率,但是对于一些业务场景来说这种确实不太好,由于数据库采用的是Json数据库,其存储数据的格式及API支持力度还不够好,不是特别推荐复杂逻辑上手云函数与云数据库。

1.云函数+云数据库坑

首先来看一下云函数问题,云函数上传必须要保证开通云开发,这个在小程序IDE上是有按钮的,可以直接点云开发,然后开通即可,右键cloudfunctions必须选择一个环境,选择好后,则会提示当前环境是xxx,那么随后的数据库操作,云函数上传都是该环境下。

聊聊小程序开发那些坑那些事_c++

其次,如何对自己编写的云函数进行本地调试及上传呢?本地调试直接右键自己写的函数即可,选择自己的函数,切记一定要安装npm,随后在该目录下进行npm install,那么本地断点调试就非常方便了,这一块官方文档写的确实不错,有gif动画,这一块点赞!前面云函数编写好后,需要上传到刚才的环境里面,右键有个上传并步数据不依赖node_models,选择这个上传后,在自己的云开发环境里面选择云函数则可以看到。

如果上传了之后,代码写的有问题,又该如何查看及调试log等操作呢?断点调试是支持的,刚才本地调试是可以的,云函数输出的log同样可以支持,在云开发的云函数里面有个log,可以查看。

一定要注意一个大坑:云函数对数据库的异步操作返回问题有可能引起log未输出,也就是代码未执行,此时一定要看自己的代码异步问题,这一块是node.js的语法方面知识,可以多去学习一下。

既然前面提到了blabla,一大堆的云函数问题,那么云函数到底最大的功能在哪里呢,那便是云数据库了,在本地写的你查询数据默认估计20条,到了云函数就是100条了,如果想要更强大的功能还是得用云函数,同时使用云数据库也有如下问题:例如,我明明写了查询操作,代码没问题,并且数据库有数据,为何没得数据呢?我操作了半天,也没报错,咋没插入进去呢?

等等与云数据库操作相关的问题太多太多,像前面提到的有数据却查不出来,这个就得去看一下云数据库集合的权限问题,插入没插入进去,也有可能是这个问题。

像这类问题还算简单,给你们说几个比较复杂的例子吧,我直接跑官方的json串数据,明明是有筛选条件的,结果却给我全量返回了,也就是说那些操作官方文档说支持,你却返回的是不支持结果,这种就很烦,查了社区内的讨论,却没几个解决的,云数据库伴随的更新操作是最复杂的问题,因为查询你可以用js写逻辑,插入也可以,但更新你要进行查询的定位并进行替换等操作,json串格式一旦复杂,支持力度便不再方便操作,这或许是一个坑吧。

2.调试坑爹问题

在真机调试的时候,真机调试报错:received error code 1 on sync-0,查了各种文档后至今无解,过了几个小时候,就又可以了,有人说是安卓bug,也有人说ios bug,反正都试了一下,没用,迷之操作。

聊聊小程序开发那些坑那些事_c++_02


最后,问题到还是蛮多的,今天就先列举这些比较经典的问题吧,期待大家持续关注,本节完~