电商小程序04实现登录逻辑

简介: 电商小程序04实现登录逻辑


上一篇我们实现了登录功能的前端界面,这一篇实现一下登录的具体逻辑。

1 创建自定义方法

一般如果页面点击按钮需要有事件响应的,我们用自定义方法来实现。打开我们的应用,在代码区点击立即新建

选择新建javascript方法

修改一下方法名称,改为login

2 获取用户名和密码

在做登录校验的时候,我们需要先获取用户输入的信息。微搭里用$w作为命名空间,可以通过组件的id来获取到具体的组件信息,然后再获取属性。获取用户名和密码的代码如下

const username = $w.input1.value
const password = $w.input2.value

这里涉及到javascript的变量定义和赋值的概念。我们这里用const声明了一个常量,然后用等号给常量进行赋值,常量的意思是如果赋值后不允许再次改变。

这里如果想看一下常量的值,我们可以使用console.log打印一下常量的值,比如增加打印内容

console.log('username',username)
console.log('password',password)

如果想看到结果,我们需要给登录按钮设置点击事件,调用我们的自定义方法

选择javascript方法

选择我们定义的login方法

然后点击实时预览按钮

在打开的界面,点击开发调试工具

然后输入用户名和密码,点击登录按钮就可以看到控制台的信息

3 验证用户是否同意协议

在登录的时候,需要验证是否同意用户协议,如果同意我们就验证用户名和密码是否正确,如果不同意我们就提示用户信息要求点击。

先定义一个变量来获取用户的选择

const agree = $w.radio1.value
    if(agree == "1"){
    }else{
        $w.utils.showToast({
            title:"请勾选同意用户协议",
            icon:'error',
            duration:2000
        })
    }

这里用到了一个语法是javascript的分支判断语句,分支判断语句的基本结构是if和else,表示的是如果if语句小括号里的表达式返回为true,就执行if语句的内容,如果返回false就执行else的部分。

如果我们不勾选用户协议,那么agree的值就为空,空是否等于1呢,显然不等于,就走到了else里。我们在else里调用了前端api的showToast方法,给用户一个提示信息

4 验证用户名和密码

验证用户名和密码是否有效,其实是去数据源里匹配,如果用用户名和密码匹配到数据,那表示登录正确,如果没有匹配到就表示验证未通过。我们这里调用数据源的查询单条方法

代码贴入之后,await有一个红色的波浪线,表示这块是有语法错误的。在javascript中如果出现了await关键字,那它外层的代码就需要声明为异步方法,用async表示

然后就是要替换我们自己的dataSourceName,在侧边栏点击数据源的图标

选中我们的注册用户数据源,粘贴数据源的标识

之后就是构造查询条件,需要按照用户名和密码去做等值匹配,代码如下

const username = $w.input1.value
    const password = $w.input2.value
    console.log('username', username)
    console.log('password', password)
    const agree = $w.radio1.value
    if (agree == "1") {
        const user = await $w.cloud.callDataSource({
            dataSourceName: "zcyhxx_7diyeuv",
            methodName: "wedaGetItemV2",
            params: {
                // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
                filter: {
                    where: {
                        $and: [
                            {
                                zh: {
                                    $eq: username, // 获取单条时,推荐传入_id数据标识进行操作
                                },
                            },
                             {
                                mm: {
                                    $eq: password, // 获取单条时,推荐传入_id数据标识进行操作
                                },
                            },
                        ],
                    },
                },
                select: {
                    $master: true, // 常见的配置,返回主表
                },
            },
        });
        console.log('user',user)
    } else {
        $w.utils.showToast({
            title: "请勾选同意用户协议",
            icon: 'error',
            duration: 2000
        })
    }

初学者可能对数据源的参数比较困惑,微搭是使用mongodb作为数据库,写法肯定和你熟悉的关系型数据库是完全不一样的。mongodb的特点是一切都需要用对象和数组去构造

比如我们这里的查询条件,where后边就是一个数组,而里边的元素是我们具体的查询条件,我们这里用了且的关系,每一个对象都构造了一个查询条件,这里是让账号=用户输入的账号,密码=用户输入的密码

一定要注意,左边是数据源的字段标识,右边要传入我们定义的常量

查询的结果呢也是一个对象,通过_id是否有值来判断用户名和密码是否正确,完整的代码

export default async function ({ event, data }) {
  const username = $w.input1.value
  const password = $w.input2.value
  const agree = $w.radio1.value
  console.log('agree', agree, typeof (agree))
  if (agree == '1') {
    const user = await $w.cloud.callDataSource({
      dataSourceName: "zcyhxx_7diyeuv",
      methodName: "wedaGetItemV2",
      params: {
        // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
        filter: {
          where: {
            $and: [
              {
                zh: {
                  $eq: username, // 获取单条时,推荐传入_id数据标识进行操作
                },
              },
              {
                mm: {
                  $eq: password, // 获取单条时,推荐传入_id数据标识进行操作
                },
              },
            ],
          },
        },
        select: {
          $master: true, // 常见的配置,返回主表
        },
      },
    });
    console.log('user', user)
    if (user._id) {
      $w.utils.redirectTo({
        pageId: "index", // 页面 Id
        packageName: "", // 主应用为空或不填,子模块填写 子包目录,查找位置 子包编辑器 --- 页面 --- 子包目录
        params: { key: "value" },
      });
    } else {
      $w.utils.showToast({
        title: "用户名或者密码错误",
        icon: "error",
        duration: 2000, // 2秒
      });
    }
  } else {
    $w.utils.showToast({
      title: "请勾选用户协议",
      icon: "error",
      duration: 2000, // 2秒
    });
  }
}

增加了如果用户名和密码正确之后重定向到首页,如果错误给出提示信息。

总结

本篇我们带着大家一步步的拆解了用户登录的逻辑,低码开发也需要写各种前后端的代码,有些初学者的预期是花个五六个小时就可以掌握工具的用法,显然是不现实的。既然用低代码可以实现用代码就可以做的事,他肯定是有一些扩展的,比如就会支持前后端代码的编写,熟练掌握开发语言是把工具发挥出应有的价值的前提。

相关文章
|
13天前
|
小程序 前端开发 算法
|
1月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
73 0
|
3月前
|
小程序 前端开发 JavaScript
【电商新机遇】支付宝小程序如何助你打造爆款电商解决方案?揭秘背后的技术奥秘!
【8月更文挑战第27天】本文详细介绍如何利用支付宝小程序构建电商应用,覆盖从项目初始化、页面设计、功能开发到数据分析的全流程。首先,需注册开发者账号并安装相关工具;随后创建项目,并按示例配置基本页面结构;接着设计商品列表等界面布局;再实现商品展示等功能;最后运用支付宝提供的工具进行数据分析,以优化用户体验及营销策略。跟随本教程,您将能打造出一款完整的电商小程序。
90 1
|
3月前
|
小程序 安全 Java
|
3月前
|
存储 小程序 JavaScript
|
3月前
|
小程序 JavaScript API
|
3月前
|
小程序 前端开发 安全
|
28天前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
185 3
|
1月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
44 0
微信小程序更新提醒uniapp
|
3月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
104 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目

热门文章

最新文章