点餐小程序实战教程04-用户注册

简介: 点餐小程序实战教程04-用户注册

我们上一篇讲解了自定义方法以及生命周期函数的概念,本节我们讲解一下数据源操作的方法。

1 查询单条数据

在我们的业务逻辑里,是要根据用户的登录信息来去数据源获取数据,根据返回结果来判断是否注册过。这里就涉及到要如何过滤数据的问题,微搭为数据过滤提供了标准的api,先打开api文档


https://cloud.tencent.com/document/product/1301/96166#.E6.9F.A5.E8.AF.A2.EF.BC.88wedagetitemv2.EF.BC.89


这里用到了查询单条的api,将示例代码贴入到我们的自定义代码中

export default async function ({ event, data }) {
   const userInfo = await $w.auth.getUserInfo()
   const openid = userInfo.openId
   console.log("openid", openid)
   const result = await $w.cloud.callDataSource({
      dataSourceName: "sjmx_ftf41oj",
      methodName: "wedaGetItemV2",
      params: {
         // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
         filter: {
            where: {
               $and: [
                  {
                     _id: {
                        $eq: "f8f6930864c11fee007010104a2589c4", // 获取单条时,推荐传入_id数据标识进行操作
                     },
                  },
               ],
            },
         },
         select: {
            $master: true, // 常见的配置,返回主表
         },
      },
   });
}


需要修改的是dataSourceName,在编辑器的左侧菜单点击数据源的图标

找到我们的数据源,在名称旁边就是数据源的标识,替换到dataSourceName里


然后构造查询条件,查询条件需要写在where里,and and表示且的关系,如果需要多个条件就在 and里继续扩充,我们这里需要根据openid来查,将代码改为如下


这个条件的意思是根据当前登录用户的openid进行过滤,条件是相等$ eq表示相等的意思

2 全局变量

微搭中的变量按照作用域分为页面变量和全局变量,页面变量只能在本页面中使用,全局变量可以在整个应用生命周期内使用。

在代码区的全局点击新建,创建一个全局变量user

2 判断用户是否存在

查询单条的返回值是一个对象,我们可以判断对象是否为空来验证用户是否注册过,代码如下

 if (Object.keys(result).length === 0) {
      $w.utils.navigateTo({
         pageId: 'index', // 页面 Id
         params: { key: 'value' },
      })
   }else{
      $w.app.dataset.state.user = result
   }

我们通过对象的原型方法来判断对象是否为空,如果一个对象没有键那么就表示空对象。如果是空对象我们就跳转到用户注册页面,在左上角点击页面创建的图标创建一个用户注册页面

然后复制一下页面ID

替换到我们的pageId里

这样首页加载完成后就会做页面的跳转,跳转到注册页面


可以看到代码还有一个分支,如果对象不为空,说明已经注册过了,那我们就将查询的结果赋值给我们的全局变量


在javascript中使用if/else来表示分支结构,通常If语句的小括号里表示条件,这个条件通常是一个表达式,比如我们这里的判断对象是否为空。表达式通常返回结果是true或者false,如果条件为真我们就执行if里的逻辑,如果条件为假,我们就执行else里的逻辑


如果需要多分支的结构我们还可以使用if/else if/else的结构,我们这里只有两个分支上述代码就可以了


完整的代码

/**
 * 
 * 可通过 $page 获取或修改当前页面的 变量 状态 handler lifecycle 等信息
 * 可通过 app 获取或修改全局应用的 变量 状态 等信息
 * 具体可以console.info 在编辑器Console面板查看更多信息
 * 注意:该方法仅在所属的页面有效
 * 如果需要 async-await,请修改成 export default async function() {}
 * 帮助文档 https://cloud.tencent.com/document/product/1301/57912
 **/
/**
 * @param {Object} event - 事件对象
 * @param {string} event.type - 事件名
 * @param {any} event.detail - 事件携带自定义数据
 *
 * @param {Object} data
 * @param {any} data.target - 获取事件传参的数据
 **/
export default async function ({ event, data }) {
   const userInfo = await $w.auth.getUserInfo()
   const openid = userInfo.openId
   console.log("openid", openid)
   const result = await $w.cloud.callDataSource({
      dataSourceName: "yhgl_euikgv5",
      methodName: "wedaGetItemV2",
      params: {
         // 筛选内容,筛选内容推荐使用编辑器数据筛选器生成
         filter: {
            where: {
               $and: [
                  {
                     openid: {
                        $eq: openid, // 获取单条时,推荐传入_id数据标识进行操作
                     },
                  },
               ],
            },
         },
         select: {
            $master: true, // 常见的配置,返回主表
         },
      },
   });
   if (Object.keys(result).length === 0) {
      $w.utils.navigateTo({
         pageId: 'u_yong_hu_zhu_ce', // 页面 Id
         params: { key: 'value' },
      })
   }else{
      $w.app.dataset.state.user = result
   }
}

总结

本节我们主要讲解了数据源方法的使用以及条件语句的使用,在编程中熟练掌握语法是你实现功能的前提条件,如果基础比较薄弱的同学还是要先学习一下基本的javascript语法,正所谓磨刀不误砍柴工,该投入的还是要投入的。

相关文章
|
5天前
|
小程序 程序员 开发工具
电商小程序05用户注册
电商小程序05用户注册
|
5天前
|
小程序 容器
日程安排小程序实战教程
日程安排小程序实战教程
|
5天前
|
小程序 API
点餐小程序实战教程09-订单功能开发
点餐小程序实战教程09-订单功能开发
|
5天前
|
小程序 测试技术 API
外卖小程序实战-接单后小票机自动打印订单
外卖小程序实战-接单后小票机自动打印订单
15 0
|
5天前
|
小程序
外卖小程序实战
外卖小程序实战
10 0
|
5天前
|
小程序 前端开发 UED
详细讲解uniapp转小程序分包教程!!!
详细讲解uniapp转小程序分包教程!!!
|
5天前
|
存储 编解码 小程序
抖音小程序开发中遇见的坑点
在抖音小程序开发中,需注意10大坑点:遵守小程序限制与规范;解决兼容性问题;优化数据加载速度;适应分享功能限制;处理视频播放挑战;优化图片加载显示;管理资源文件;提升用户体验;考虑安全性;及时更新维护。通过测试、优化和遵循官方文档,可克服这些问题,打造优质小程序。
|
5天前
|
小程序 前端开发 API
小程序全栈开发中的多端适配与响应式布局
【4月更文挑战第12天】本文探讨了小程序全栈开发中的多端适配与响应式布局。多端适配涉及平台和设备适应,确保统一用户体验;响应式布局利用媒体查询和弹性布局维持不同设备的布局一致性。实践中,开发者可借助跨平台框架实现多平台开发,运用响应式布局技术适应不同设备。同时,注意兼容性、性能优化和用户体验,以提升小程序质量和用户体验。通过这些方法,开发者能更好地掌握小程序全栈开发。
|
5天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
5天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。

热门文章

最新文章