一、操作环境的配置

1、在官网上下载一个“HBuilderX”(HBuilderX-高效极客技巧 (dcloud.io)icon-default.png?t=N7T8https://www.dcloud.io/hbuilderx.html)选择对应的版本下载即可,下载完成之后 

二、创建云数据库

2、我们还需要一个云数据库,当然这一步就省略了,小编这里已经注册好了一个账户,所以没有操作步骤了

3、创建我们的项目,以我酒店点菜系统为例:

文件——新建——项目

进去成功之后是这样的:

我这里uniCloud是关联了云数据库,新开的项目是“未关联的状态”你们可以关联自已的云数据库

uniCloud右键打开点击关联云服务空间或项目

选择关联服务空间,找到对应的云数据库创建的表再进行关联即可

我么找到pages这里新建一个页面,酒店的登录“Login-hotel”,当然也可以在新建一个页面用来定义我的注册页面的“Enrool-hotel”

在uniCloud打开web控制台

新建一个自已的表

三、编写登录注册前后端的页面以及代码

3、现在开始我们的登录页面设置了:

<template>
    <!-- 这是酒店的登录 -->
    <view class="login">
        <view class="title">
            <view>
                <span>Welcome to the hotel's ordering system!</span>
            </view>
            <view>
                <span>欢迎登录酒店点菜管理系统</span>
            </view>
        </view>
        <view class="form">
            <input class="uni-input" v-model="username" type="text" placeholder="请输入账号" />
            <input class="uni-input" v-model="password" password type="text" placeholder="请输入密码" />
        </view>
        <view class="btn">
            <button @tap="login">立即登录</button>
            <view class="tip" >
                <text type="primary" @click="addnew">没有账号,请先注册</text>
            </view>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                username: "",
                password: ""
            }
        },
        methods: {
            login() {
                uniCloud.callFunction({
                    name: "Login-hotel",
                    data: {
                        username: this.username,
                        password: this.password
                    },
                    success: (res) => {
                        console.log(res);
                        if (res.result.code == 200) {
                            uni.showToast({
                                title: "登录成功"
                            })
                            setTimeout(() => {
                                uni.navigateTo({
                                    url: "/pages/index/index"
                                })
                                //把用户名存储到本地存储中
                                uni.setStorageSync("name", res.result.user.name)
                            }, 2000)
    
                        } else {
                           7
                            uni.showToast({
                                title: res.result.msg,
                                icon: "none"
    
                            })
                        }
                    }
                })
            },
            addnew() {
                uni.navigateTo({
                    url: "/pages/Enroll-hotel/Enroll-hotel"
                })
            },
        }
    }
</script>
<style lang="scss">
    .login {
        padding: 100rpx 40rpx;
        background: url("../../static/down.png");
        background-size: 100% 100%;
        height: 100vh;

        .title {
            font-weight: bolder;
            font-size: 40rpx;
            text-align: center;
        }

        .form {
            margin-top: 100rpx;

            input {
                border-bottom: 1px solid #d6d6d6;
                margin-bottom: 40rpx;
            }
        }

        .btn {
            margin-top: 100rpx;

            button {
                background-color: #11d77e;
                color: white;
            }

            .tip {
                text-align: right;
                color: gray;
                margin-top: 20rpx;

            }
        }
    }
</style>

四、页面展示

我的页面是这样的

4、在后端设置我们代码用来传参,右键新建云函数/云对象,最好和pages页面新建取得名字一样

五、代码展示

后端代码展示:

'use strict';
exports.main = async (event, context) => {
    //event为客户端上传的参数 酒店后台点菜系统的后端代码
    console.log('event : ', event)
    //1、连接数据库
    var db = uniCloud.database();
    //2.接收前端传过来的用户名和密码与数据库里面的用户名和密码对比  查询数据表 user 用户名 密码
        var username = event.username;
        var password = event.password
        var result = await db.collection('login').where({
            username: username
        }).get()
        console.log(result)
        if (result.affectedDocs == 0) {
            //不存在
            return {
                code: 500,
                msg: "用户不存在"
            }
        } else {
            if (password == result.data[0].password) {
                return {
                    code: 200,
                    msg: "登录成功",
                    user: result.data[0]
                }
            } else {
                return {
                    code: 500,
                    msg: "密码错误"
                }
            }
        }
    };
5、想必大家都和我一样了吧可以登录是吧,我们再来完善一下,设置启动页面,这样的话我们登录成功就会跳转到首页

6、我们进行注册页面编写:

虽然和登录页面一致但是后端执行的方法不一样

注册页面的代码:

<template>
    <view class="new">
        <view class="title">
            <view>
            <span>Hollow!</span>
            </view>
            <view>
                <span>欢迎登录酒店点菜系统</span>
            </view>
        </view>
        <view class="form">
            <view class="form">
                <input class="uni-input" v-model="name" type="text" placeholder="请输入姓名" />
                <!-- <input class="uni-input" v-model="username" type="text" placeholder="请输入账号" />
                <input class="uni-input" v-model="stuNo" type="text" placeholder="请输入学号" />
                <input class="uni-input" v-model="stuClass" type="text" placeholder="请输入班级" /> -->
                <input class="uni-input" v-model="password" password type="text" placeholder="请输入密码" />
            </view>
        </view>
        <view class="btn">
            <button @tap="addnew">立即注册</button>
            <view class="tip">
                <text type="primary" @click="addlogin">已有账号,前往登录</text>
            </view>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                name: "", 
                username: "",
                 stuNo: "",
                stuClass: "", 
                password: ""
            }
        },
        methods: {
            addnew() {
               
                uniCloud.callFunction({
                    //函数名(接口名)
                    name: "Enroll-hotel",
                    data: {
                        username: this.username,
                        password: this.password,
                         name: this.name,
                        stuNo: this.stuNo,
                        stuClass: this.stuClass 
                    },
                    success: (res) => {
                        console.log(res);
                        if (res.result.code == 200) {
                            uni.showToast({
                                title: "注册成功",
                                icon: "none",
                                duration: 2000
                            })
                            setTimeout(() => {
                                uni.navigateTo({
                                    url: "/pages/Login-hotel/Login-hotel"
                                })
                            }, 2000)
 
                        }
                    }
                })
            },
            addlogin(){
                uni.navigateTo({
                    url: "/pages/Login-hotel/Login-hotel"
                })
            }
        }
    }
</script>

<style lang="scss">
    .new {
        padding: 100rpx 40rpx;
        background: url("../../static/down.png");
        background-size: 100% 100%;
        height: 100vh;

        .title {
            font-weight: bolder;
            font-size: 40rpx;
        }

        .form {
            margin-top: 100rpx;

            input {
                border-bottom: 1px solid #d6d6d6;
                margin-bottom: 40rpx;
            }
        }

        .btn {
            margin-top: 100rpx;

            button {
                background-color: #11d77e;
                color: white;
            }

            .tip {
                text-align: right;
                color: gray;
                margin-top: 20rpx;

            }
        }
    }
</style>

注册页面后端代码:

'use strict';
exports.main = async (event, context) => {
    //event为客户端上传的参数
    console.log('event : ', event)
    var db = uniCloud.database();
    //2.接收前端传过来的用户名和密码与数据库里面的用户名和密码对比  查询数据表 login 用户名 密码

    var id = await db.collection('login').add({
        username: event.username,
        password: event.password,
        name: event.name,
        stuNo: event.stuNo,
        stuClass: event.stuClass
    })
    
    if (id) {
        return {
            code: 200,
            msg: "成功"
        }
    }else {
        return {
            code: 500,
            msg: "失败"
        }
    }
    console.log(result)
    //返回数据给客户端
    return event
};

六、云数据库的表

7、这是我的登录云数据库的表

七、总结

8、编写一个登录注册需要用到云数据库以及环境的搭建,前后端不想之前的分离一样这是写在一起的,所以最好编写命名时保持一致,这样就会减少报错,当然需要学会检查,代码不是写好就能运行的是需要反复检查确保没有报错才行,最后小编(小北不想写代码)祝愿大家能够保持一种积极向上的态度去写代码!!!

9、这样一个简单且好用的小程序登录注册就写好了,你们学会了吗?

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐