登陆篇
今天咱们使用uniapp
提供的云函数
以及云数据库
来实现一个简单的登陆
、注册
的功能。
学习本教程以前你须要简单了解一下:html
固然,不会也没有关系,我会慢慢阐述。前端
咱们先简单介绍下实现一个登陆注册功能须要那些前置东西vue
若是你不会前端咱们能够找一个模板。本文使用的模板为amo***@qq.com
提供的插件极简登陆注册模板mysql
常规的开发咱们会使用mysql
来进行开发,今天咱们使用uniapp
提供的JSON 格式的文档型数据库
,顾名思义,数据库中的每条记录都是一个 JSON 格式的文档。git
这里就不在一一阐述,详情可参考云数据库基本概念github
这里咱们使用uniapp
提供的云函数,云函数是运行在云端的 JavaScript
代码,和普通的Node.js
开发同样,熟悉Node.js
的开发者能够直接上手。sql
dcloud
帐号:注册地址。用于登陆编辑器和dcloud
,注册完成后须要进行验证激活,已有帐号的同窗能够跳过打开插件库极简登陆注册模板,点击使用 HBuilderX 导入插件
,以下图3.1
数据库
图3.1
![]()
以后会打开编辑器进行导入,切记勾选启用uniCloud
,以下图3.2
后端
图3.2
![]()
导入成功后你会获得以下目录api
这样,前端模板就建立完成了,接下来咱们先把前端逻辑写好
3.2.1 删除其余登陆
的代码
写入登陆的请求接口的方法(完整代码可查看demo代码)
uni.showLoading({ title: '登陆中' }); uni.request({ url: 'xxxxxxxxxxx', data: { phoneData: this.phoneData, passData: this.passData }, success: (res) => { console.log('res', res) // uni.showToast({ // icon: 'error', // position: 'bottom', // title: '帐号或密码错误,帐号admin密码admin' // }); }, complete: () => { uni.hideLoading(); this.isRotate=false } })
3.2.2 注册改成仅须要帐号
和密码
注册
写入注册代码(完整代码可查看demo代码)
_this.isRotate = true uni.showLoading({ title: '注册中' }); uni.request({ url: 'xxxxxxxxxxx', data: { phoneData: this.phoneData, passData: this.passData }, success: (res) => { console.log('res', res) }, complete: () => { uni.hideLoading(); _this.isRotate = false } })
右键UniCloud
文件夹,点击关联云服务空间或项目
点击新建,(须要提早进行实名认证)
接下来会跳转之网页,咱们选择阿里云
新建完成后回到编辑器点击刷新,选择刚才新建的服务空间便可,点击关联
添加云数据库能够代码添加也能够使用网页进行操做,这里咱们使用网页进行操做
打开unicloud服务空间列表,进入刚才新建的服务空间,选择新建云函数库。
建立空表便可,不须要选择模板
修改表结构以下
{ "bsonType": "object", "required": [], "permission": { "read": false, "create": false, "update": false, "delete": false }, "properties": { "_id": { "description": "ID,系统自动生成" }, "phoneData": { "description": "用户名" }, "passData": { "description": "密码" } } }
到这里,数据库已经新建完成。接下来咱们新建处理接口的云函数
cloudfunctions
文件夹,点击新建云函数
写入注册代码,这里咱们只作数据插入操做,去重这里不作考虑,能够自行进行优化
'use strict'; exports.main = async (event, context) => { //event为客户端上传的参数 console.log('event : ', event) const db = uniCloud.database(); //代码块为cdb const collection = db.collection('userTable'); let queryStringParameters = event.queryStringParameters let res = await collection.add({ phoneData: queryStringParameters['phoneData'], passData: queryStringParameters['passData'] }) //返回数据给客户端 return { mesg: '注册成功', code: 200 } };
cloudfunctions
,选择上传全部云函数··
打开便可
/http/register
这个url即是咱们的注册接口
同理,新建login
云函数,填入逻辑代码
'use strict'; exports.main = async (event, context) => { //event为客户端上传的参数 console.log('event : ', event) const db = uniCloud.database(); //代码块为cdb const dbCmd = db.command const $ = dbCmd.aggregate let callback = {} let queryStringParameters = event.queryStringParameters let phoneData = queryStringParameters['phoneData'] let passData = queryStringParameters['passData'] const collection = db.collection('userTable'); let res = await collection.where({ phoneData: dbCmd.eq(phoneData) }) .get() console.log('res.data[0].passData : ', res.data[0].passData) console.log('passData : ', passData) if (res.data.length == 0) { callback = { mesg: '没有此帐号', code: 500 } } else { if (res.data[0].passData == passData) { callback = { mesg: '登陆成功', code: 200 } } if (res.data[0].passData !== passData) { callback = { mesg: '密码错误', code: 500 } } } //返回数据给客户端 return callback };
服务列表填入/http/login
而后咱们将刚才的登陆注册接口填入以前的空余的前端代码里
今天的登陆篇就到这里就结束了。
demo待优化的地方是重复注册,这里没作优化,可自行进行优化。
更多问题欢迎加入前端交流群交流749539640