家政预约小程序07参与活动

embedded/2025/1/7 21:54:55/

目录

  • 1 浏览时写入数据
  • 2 点击参与按钮更新记录
  • 总结

我们上一篇搭建了活动展示的页面,当用户浏览活动的时候,需要记录参与的信息,本篇我们介绍一下如何实现活动参与的功能。

1 浏览时写入数据

为了方便跟踪用户的信息,比如用户浏览时就写入数据,我们需要在页面的生命周期函数中增加写入的逻辑。

打开小程序,点击+号创建javascript方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当用户打开页面的时候,我们就要记录一条信息,表示用户已经参与了活动,只不过我们的状态是未参与

写入的时候我们需要调用新增方法的API,具体的代码如下

export default async function ({ event, data }) {try {const activityRecord = await $w.cloud.callDataSource({dataSourceName: "hdcyjlb",methodName: "wedaGetItemV2",params: {// 筛选内容,筛选内容推荐使用编辑器数据筛选器生成filter: {where: {$and: [{hdxx: {$eq: $w.page.dataset.params.activityid, // 获取单条时,推荐传入_id数据标识进行操作},},{yhxx: {$eq: $w.app.dataset.state.user._id, // 获取单条时,推荐传入_id数据标识进行操作},},],},},select: {$master: true, // 常见的配置,返回主表},},});if (Object.keys(activityRecord).length == 0) {const result = await $w.cloud.callDataSource({dataSourceName: "hdcyjlb", // 数据模型标识methodName: "wedaCreateV2",params: {data: {hdxx: { _id: $w.page.dataset.params.activityid },yhxx: { _id: $w.app.dataset.state.user._id },cyzt: "1",cysj: $w.Now()},},});}} catch (e) {console.log("错误代码", e.code, "错误信息", e.message);}
}

代码的逻辑是先根据活动id和用户id查询活动参与表是否有记录,如果不存在就调用新增方法写入具体的信息

我们在搭建数据源的时候,活动信息和用户信息都是选择的新版关联关系。新版关联关系在数据源存储数据的时候是对象类型,因此我们在写入数据的时候要将对应的对象信息构造好。

参与时间我们使用$w.Now()来获取当前时间的毫秒值写入数据源。参与状态我们给一个固定值,1表示未参与。虽然我们在创建数据源的时候枚举值写的是汉字,但是实际存储的是枚举的标识

具体如何查看标识呢?打开我们的数据源,打开枚举项就可以看到
在这里插入图片描述

2 点击参与按钮更新记录

点击参与活动的时候,我们需要更新一下活动信息,为此我们需要先新建一个变量用来保存活动参与记录的数据标识
在这里插入图片描述
这个时候要对我们的初始化方法改造一下,去获取到参与记录的数据标识

export default async function ({ event, data }) {try {const activityRecord = await $w.cloud.callDataSource({dataSourceName: "hdcyjlb",methodName: "wedaGetItemV2",params: {// 筛选内容,筛选内容推荐使用编辑器数据筛选器生成filter: {where: {$and: [{hdxx: {$eq: $w.page.dataset.params.activityid, // 获取单条时,推荐传入_id数据标识进行操作},},{yhxx: {$eq: $w.app.dataset.state.user._id, // 获取单条时,推荐传入_id数据标识进行操作},},],},},select: {$master: true, // 常见的配置,返回主表},},});if (Object.keys(activityRecord).length == 0) {const result = await $w.cloud.callDataSource({dataSourceName: "hdcyjlb", // 数据模型标识methodName: "wedaCreateV2",params: {data: {hdxx: { _id: $w.page.dataset.params.activityid },yhxx: { _id: $w.app.dataset.state.user._id },cyzt: "1",cysj: $w.Now()},},});$w.page.dataset.state.ativityRecordId = result.id}else{$w.page.dataset.state.ativityRecordId = activityRecord.id}} catch (e) {console.log("错误代码", e.code, "错误信息", e.message);}
}

改造后的逻辑我们添加了标识的更新方法,如果是首次参与那就从新增的返回结果赋值,如果已经参与过了就从查询单条的返回结果赋值

获取到数据标识之后,我们就可以根据标识更新记录了,添加一个更新的自定义方法

在这里插入图片描述
除了要更新状态外,我们还需要写入用户的规则选择信息,从我们的标签选择提取选中值即可

写入信息之后需要控制按钮是否可以点击,如果用户参与过就不让用户重复参与

添加一个布尔值的变量用来控制是否可点击
在这里插入图片描述
将该变量绑定到按钮的是否禁用属性上
在这里插入图片描述
绑定好了如果用户参与了我们就把这个变量的值修改为true
在这里插入图片描述
方法的完整代码

export default async function ({event, data}) {try {const result = await $w.cloud.callDataSource({dataSourceName: "hdcyjlb", // 数据模型标识methodName: "wedaUpdateV2",params: {"data": {"hdgzxx": {_id:$w.tagSelect1.value},"cyzt": "2"},"filter": {"where": {"$and": [{"_id": {"$eq": $w.page.dataset.state.ativityRecordId}}]}},}});$w.page.dataset.state.hasJoinActivity = true} catch (e) {console.log("错误代码", e.code, "错误信息", e.message);}
}

总结

本篇我们介绍了参与活动的具体功能,包括页面加载时写入数据,以及点击按钮时更新记录的状态。灵活使用API是我们实现具体功能的前提,在编写API的时候要熟悉文档型数据库更新和写入记录的语法,这块是和传统开发有很大不同的地方。


http://www.ppmy.cn/embedded/151807.html

相关文章

解决iNodeClient客户端出现查询SSL VPN网关参数失败的问题

一、问题: 使用iNodeClient连接VPN报错,校验网关、用户名、密码都没问题,仍然抱错查询SSL VPN网关参数失败,请检查网络配置或联系管理员。 二、解决方案: 2.1 方案一 重启iNodeAuthService服务 sudo /Library/Star…

Linux 基础七 内存

在操作系统中,进程的内存布局通常分为几个区域,包括代码段、已初始化的数据段、未初始化的数据段(BSS段)、堆和栈。其中,堆用于动态内存分配,其大小可以在运行时根据需要增长或收缩。 文章目录 7.1 在堆上…

戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?

BIOS(基本输入输出系统)是计算机硬件与操作系统之间的桥梁,它负责初始化和测试系统硬件组件,并加载启动操作系统。在某些情况下,如调整启动顺序、更改系统时间或日期、修改硬件配置等,您可能需要进入BIOS进…

青少年编程与数学 02-006 前端开发框架VUE 05课题、使用模板

青少年编程与数学 02-006 前端开发框架VUE 05课题、使用模板 一、模板二、Vue 模板的特点三、模板形式四、横向比较Vue 模板 vs Angular 模板Vue 模板 vs React JSXVue 模板 vs Svelte 模板 五、Vue 模板的基本语法六、应用示例 课题摘要:本文介绍了Vue.js中的模板系统&#xf…

RabbitMQ生产消息【交换机、路由键】与消费消息的简单使用

文章目录 一、使用步骤1.新建交换机2.新建队列3.队列绑定交换机和路由键 二、代码1.生产端2.消费端 一、使用步骤 1.新建交换机 点击Exchanges 新增交换机名称为msg.e1,type为direct 2.新建队列 点击Queues 新增队列,名称为q.test1 3.队列绑定交换…

C# 设计模式(行为型模式):访问者模式

C# 设计模式(行为型模式):访问者模式 在复杂的系统中,我们可能需要对一组对象执行不同的操作,而这些操作往往会根据对象的类型有所不同。访问者模式(Visitor Pattern)是一种行为型设计模式&…

MySQL低版本没有函数row_number() over的解决方案

最近在维护老项目时,需要对历史数据做分析取出分区数据中的第一条,无奈因为MySQL版本过低,无法使用函数row_number() over,苍了个天~ 不过这点小事怎么可能难倒我们这群考古专家呢,在此分享一下解决方案。 主要原因是问…

Sublime Text4 4189 安装激活【 2025年1月3日 亲测可用】

-----------------测试时间2025年1月3日------------------- 下载地址 官方网址:https://www.sublimetext.com 更新日志:https://www.sublimetext.com/download V4189 64位:https://www.sublimetext.com/download_thanks?targetwin-x64 ....…