[吃瓜群众]啦啦啦~,几天不见我又来了。今天更新第二期,这几天在处理用户注册和题库收集。

  • 知识点:注册逻辑、登录缓存

上一期咱们讲了,如何搭一个基本的小程序框架,涉及开源组件(colorUI、Vant),新手和初中级的前端,十分推荐该两款开源组件,能够帮你节省大量的时间。

​[兔子]上期链接直达:挑战30天,开发一个消防知识答题小程序,第一天

好~,咱们开始吧

1、用户注册登录

90%的用户交互程序,都少不了用户注册这个环节。想要让你的程序能够识别你的身份,那么必须要把用户信息存储在云端,是因为Http协议本身是无状态的,每次重新链接请求,都会忘记你是谁,接下来怎么处理呢?

上期咱们通过“用户填写”的开放能力,用于完善用户头像和昵称,接下来需要把用户的头像和昵称存储到数据库中

  • 打开云开发后台

创建一个“users”的集合,权限(所有用户可读,仅创建者读写)

创建“users”集合

集合创建好了之后,就开始写代码,把用户信息存储进去

代码

//保存用户信息saveInfo: async function () {var that = this;//弹窗wx.showToast({title: '保存中',icon: "loading",duration: 30000})//先检测用户昵称const checkResult = await that.checkText();if (checkResult.result.errcode == 0) {//上传用户头像const uploadResult = await that.upload();//头像链接var fileID = uploadResult.result.fileID;//上传成功if (fileID) {//此处云开发函数注册用户wx.cloud.callFunction({name: 'login',data: {create_time: util.formatTime(new Date()),avatarUrl: fileID,nickName: that.data.nickName,openid: that.data.openid,}}).then((res) => {//登录成功跳转首页that.jump();}).catch((err) => {//登录失败wx.showToast({icon: 'none',title: '登录失败' + err})});} else {wx.showToast({title: '头像保存失败',icon: "none",duration: 1000})}} else {//清空用户昵称that.setData({nickName: ''})//不合法wx.showToast({title: '昵称不合法,请重新输入',icon: "none",duration: 1000})}},

以上代码涉及三层业务流程

1:检测用户昵称是否合规(小程序非常有必要接入msgSecCheck内容检测API),它免费,能够拦截大部分违规字眼。想做一个内容合规的小程序,强烈建议您使用它,非常有必要!

违规检测

代码

try {const result = await cloud.openapi.security.msgSecCheck({openid: event.openid, //openidscene: 2, //1 资料;2 评论;3 论坛;4 社交日志)version: 2, //版本2content: event.content, //检测内容})//默认不通过result['errcode'] = 87014;//suggest  risky(危险)、pass(通过)、review(审查)if (result['result']['suggest'] == 'pass' || result['result']['suggest'] == 'review') {//通过安全检测result['errcode'] = 0;} else {//违规内容result['errcode'] = 87014;}//返回状态码return result;} catch (err) {return err;}

2:头像上传。因为截止到11.8日,关于小程序 wx.getUserProfile 接口将被收回 小程序不可以直接获取头像永久链接,咱们只好通过“填写能力”获取临时头像,然后把临时头像上传到云存储,生成永久连接

avatarUrl永久头像连接

代码

upload: function () {var that = this;//此处上传用户头像let orderCode = '';// 6位随机数(加在时间戳后面)for (var i = 0; i < 24; i++) {orderCode += Math.floor(Math.random() * 10);}//文件名const cloudPath = 'avatar/ ' + util.timestampToTimeFramt(new Date().getTime()) + '/' + (new Date().getTime() + orderCode) + '.png';//检测文本值return new Promise((resolve, reject) => {//上传图片云函数wx.cloud.callFunction({name: "upload",data: {cloudPath: cloudPath,avatarUrl: that.data.avatarUrl,},success: function (res) {resolve(res);},fail: function (res) {reject(res);}});})},

3:新老用户处理逻辑。用户场景:新用户第一次登录,存储信息到数据库,老用户登录,更新数据库的登录时间。然后本地缓存登录凭证,每次请求携带登录凭证即可

流程图

代码

//查询用户是否注册const userResult = await db.collection('users').where({openid: event.openid,}).get();//取出用户条数var length = userResult.data.length;if (length == 0) {//新用户需要填写资料, 登录态falsereturn {success: false,msg: '新用户(填写资料)'};} else {//老用户登录态truereturn {success: true,msg: '老用户(直接登录)',data: userResult.data};}

​[奸笑]三个流程大概就是这样,用户注册流程看起来是不是很简单啦~,

主要归功于云开发天然无鉴权能力帮我们省去了很多时间,也方便了很多无后台基础的同学也能开发自己的小程序,省去了购置服务器,域名备案,后台语言以及运维的烦恼

最终来个数据库特写[无辜笑],用户的头像、昵称、等相关资料是不是存储进去了?

用户资料

缓存


END~,今天用户注册登录部分大概就是这样了,如果哪里还有遗漏或者不明白的,可以在下方留言,我会一一解答

下期预告:题库设计和自动组题

挑战30天,开发一个消防答题小程序。教你如何处理小程序用户注册相关推荐

  1. 从0到1使用python开发一个半自动答题小程序

    从0到1使用python开发一个半自动答题小程序 前言 最近每天都有玩微信读书上面的每日一答的答题游戏,完全答对12题后,可以瓜分无限阅读卡.但是从小就不太爱看书的我,很难连续答对12道题,由此,产生 ...

  2. 挑战一天开发一个前后端小程序系统|源码公开,开箱即用

    有个小伙伴找到我开发一个系统,这次他要考验我的效率,第一次遇到这种条件的. 一周开发出来给2000,3天开发出来4000,一天开发出来给5000. 都这样说了,那我还拖什么? 系统完事后,和他商讨了一 ...

  3. 用去水印小程序教大家微信小程序开发

    微信小程序开发流程 注册微信小程序 要开发小程序,你的现有自己的微信公众平台,如果你还没有微信公众平台的账号,请先进入微信公众平台首页(https://mp.weixin.qq.com),咱们选择 & ...

  4. 如何用python开发一个贪吃蛇游戏_教你一步步利用python实现贪吃蛇游戏

    教你一步步利用python实现贪吃蛇游戏 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  教你一步步利用python实现贪吃蛇游戏.txt ] (友情提示:右键点 ...

  5. 电灯泡实验应该怎么做_物理小实验 教你测量小灯泡的电功率的方法

    2.检查电流表.电压表指针是否在零刻度,如果偏差,要讲指针调至零刻度线对齐. 3.根据实验电路图,将电路元件逐一连接好,电压表和电流表接入电路时,要选择合适的量程.即电压表选择0-3V(或3.8V时, ...

  6. 计算机无法启动应用程序怎么办,应用程序无法正常启动,小编教你电脑应用程序无法正常启动0xc000007b怎么解决...

    应用程序无法正常启动0xc000007b此提示是很多玩家在启动游戏时经常会遇到的一个问题,出现此问题的原因很简单,就是系统没有,导致游戏兼容上的问题,造成显示0xc000007b内存出错.下面,小编给 ...

  7. 软件删不掉要计算机管理,控制面板卸载不了程序,小编教你如何处理控制面板中卸载不掉的软件...

    如何去卸载电脑的软件?相信很多用户都会选择,从控制面板的添加或卸载程序中,找到我们要卸载的程序,直接点击卸载就可以了,不过有些人却遇到控制面板卸载不了程序,显示添加或删除程序受限,面对这种情况应该怎么 ...

  8. win10怎么不能运行c语言,0xc0000142,小编教你win10应用程序无法运行提示0xc0000142如何解决...

    一些朋友反馈自己在Win10系统中却遇到了无法运行文明5提示0xc0000142的情况,怎么回事?其实这种情况一般是杀毒残留,但也有可能是你卸载某个流氓插件不正确留下的注册表残留,该怎么办?下面,小编 ...

  9. 开发一个APP多少钱?

    开发一个APP多少钱? 开发一个APP要多少钱?相信不光是客户有这个疑问,就算是一般的程序员也想知道答案.很多程序员想在业余时间接外包挣外快,但是他们常常不知道该如何定价,如何有说服力的要价.这是因为 ...

最新文章

  1. springboot初学
  2. Docker的原理及特性介绍
  3. linux中更新perl的版本
  4. Python设计模式之外观模式实例讲解
  5. (七)SpringBoot+SpringCloud —— 集成断路器
  6. Java面向对象(3) —— 抽象类、接口、内部类、匿名内部类
  7. 数据之路 - Python爬虫 - BeautifulSoup库
  8. java+围棋+棋谱回放_聂卫平对战围棋高手Master完整比赛视频回放 全局棋谱复盘...
  9. c programe language learn notes 2
  10. MATLAB dir函数文件名排序问题
  11. 【gitee】fatal: unable to access ‘https://username:password@gitee.com: Port number ended with ‘l‘
  12. 宝塔面板是干什么的?有哪些典型的功能作用?
  13. win10系统回收站隐藏的方法
  14. Cys(Npys)-(Arg)₉,H2N-C(Npys)-RRRRRRRRR-OH
  15. 名编辑电子杂志大师教程 | 仿古书翻页
  16. 微信小程序使用函数的三种方法
  17. android zip格式的ndk,Android 使用NDK (JNI)容易解压7z压缩文件
  18. excel文件无法打印提示内存不足_Mac应用程序无法打开提示不明开发者或文件损坏的处理方法...
  19. 非线性方程(组):计算基本理论
  20. Javaweb二手交易平台(完整版)

热门文章

  1. 如何入门单片机电子技术、学习方法、建议
  2. 联想小新pro16休眠后无线网卡启用不了解决方法
  3. VOLTE是否本地播放回铃音还是网络播放
  4. 2009―2010学年度第二学期南昌市期中高二语文参考答案
  5. linux中umask值的说明与设置
  6. sqlmap详细参数
  7. 如何编写一个足球点球大战的模拟程序(C语言)
  8. PTA-使用函数统计指定数字的个数
  9. netty多台服务器 推送消息,基于Netty的消息推送服务器集群设计与实现
  10. Module not found: Error: Can‘t resolve ‘./components/Login.vue‘ in 项目路径问题