鸿蒙项目云捐助第二十九讲云捐助项目云数据库商品的批量增加功能实现

鸿蒙项目云捐助第二十九讲云捐助项目云数据库商品的批量增加功能实现

关于鸿蒙云捐助项目,前面的内容已使用云函数,云数据库分别实现云捐助项目首页中的项分类导航,底部导航,轮播图功能,这里继续实现云数据库加载捐赠商品的模块。

一、云捐助商品模块中的云数据获取

首先云捐助助的商品模块也需要云数据库的使用,这里需要参考离线项目中模拟数据的字段内容,如下所示。

courseId:1,
name:"爱满彭城慈善助医",
total_price:"260万",
used_price:"130万",
start_time:"2024-07-01",
end_time:"2024-08-30",
company:"乡村发展基金会",
isObject:true,
object_content:"书本,笔,手机,电脑等学习用品",
pic:$r("app.media.cisan1")

以上是模拟显示商品时必备的数据字段。

虽然对于数据库来说,数据库关键的查询是多表查询,华为云数据库还做不到多表查询中的一对多等情况,这样在上面的商品数据中还有结合分类数据的内容,如下图所示。

由图所示,不能建立关联表,在创建数据库时只能为每个商品添加classifyId属性,才可以知道分类程序中调用的className的名称分类,由于分类的数据在云捐助首页中使用云函数加载,这里的云数据库就不显示分类的名称。 由于在捐赠成功后会显示当前项目的爱心捐赠颗数,这里使用love_numbers字段表示爱心捐赠的颗数。因此华为云数据库创建的商品表字段描述如下。

courseId:1,
name:"爱满彭城慈善助医",
total_price:"260万",
used_price:"130万",
start_time:"2024-07-01",
end_time:"2024-08-30",
company:"乡村发展基金会",
isObject:true,
object_content:"书本,笔,手机,电脑等学习用品",
pic:$r("app.media.cisan1")
love_numbers:30

这里有了数据库的定义方法,就可以进入华为应用市场AppGallery Connect界面中,建立对应的云数据库,但是,在创建云数据库时需要注意,上面分析的字段中,确定一条记录需要两个关键字,华为云端数据库使用双关键字在调用时有很大的问题。因此这里创建华为云端数据库时使用单关键字,把categoryId分类id和courseId商品id需要合并在一起形成主键,这里使用cate_couse_id。这样输入的数据库字段和类型的对应关系,如下图所示。

点击“下一步”时进入索引页面,这里的索引可以选择cate_course_id,再点击“下一步”进入到权限选择的页面,这里的权限是所有的权限。如下图所示。

完成数据库捐赠商品表的建立后,这里在云数据库的“存储区”标签中新建一个存储区“three”。如下图所示。

接下来需要对云数据库中添加数据,这里实现批量增加功能。首先使用云数据库的导出功能,分别导出js格式的文件和json格式的文件。然后把js格式的文件放在项目的model文件夹中,把json格式的文件放在项目的rawfile文件夹中。具体做法如下图所示。

实现批量添加这里引入一个新的组件,为商品的批量添加设置入口地址,对于批量添加的文字显示可以通过模拟后台的商品表相关操作来完成。这里在mockjs目录下建立backend.js的模拟数据,如下图所示。

建立后台商品添加模拟数据的具体内容如下图所示。

有了模拟数据后,就可以把之前分类页的左右联动导航组件MyNewSiderBar复制成BackendSideBar.ets 组件,加载这个模拟数据进行后台界面BackendSideBar组件的左右列表显示,其代码如下图所示。

这里实现的是云捐助后端界面中商品,订单,用户增删改查的导航页面。布局上面在build方法中分为左右两个Scroll的滚动,也可以用左右两个List列表,左边的Scroll滚动元素里面使用ForEach遍历之前模拟的后端商品,订单,用户增删改查的模拟数据分类选项,右边的Scroll滚动元素里面ForEach遍历之前模拟的后端商品,订单,用户增删改查的模拟数据的各个子类选项。左侧的Scroll元素内部ForEach循环体中使用组件SideBar,其只是显示左侧的导航数据,“商品管理”,“用户管理”,“订单管理”等条目,当每个条目被点击时,在SideBar组件中将其的背景颜色进行修改。右侧的Scroll元素内部ForEach循环体中使用组件BackendSideBar,在BackendSideBar组件中是对“商品管理”,“用户管理”,“订单管理”等具体条目的显示。这里的SideBar组件中需要显示一个增删改查的图片及一个文字性的描述。布局代码如下图所示。

在这个组件中,首先通过@Prop单向传递接收myitem的子项数据,然后在build()方法中使用Row()将元素放在一行,在元素中有Image图片和Text文字,Image图片显示传入myitem子项数据中的图片内容,Text文本显示传入myitem子项数据中的文字内容,Image图片设置width宽度属性和height高度属性,Text组件设置fontSize的文字大小,fontWeight的粗体显示及textAlign的文字对齐方式等。

在点击这个SideBar其中的组件时,如果发现Text组件中的this.myitem.name的文字是“商品添加”,就会实现批量增加的逻辑。具体代码逻辑如下图所示。

代码中在onClick方法中首先判断this.myitem.name的名字中是否含有“商品添加”,当含有“商品添加”时首先使用cloud.database定义数据库,定义数据库时使用的存储区是“three”,使用的objectTypeInfo对象类型是GoodsInfo的商品信息,接下来定义了一个上传的捐赠商品空列表goods_arr,其类型是mydonation[],第一重遍历模拟数据goods,第二重遍历模拟数据goods中每一个商品的courseList,这里使用双重遍都是为了提取goods模拟数据中的不同字段,在二重循环的循环体中,实例化一个mydunation()的导出数据类型,对这个云数据库的每个数据类型进行set方法的赋值操作,赋值结束后通过push方法加入到goods_arr的mydonation云数据类型的数组中。

当所有的模拟商品加入到goods_arr的mydonation云数据类型的数组中时,通过定义的database获取collection集合,再执行collection集合的upsert方法进行数据的插入。其返回结果通过异步await获取。获取后的结果result如果其值大于0,则通过AlertDialog.show方法弹出警示框“所有全部数据插入数据库,可以登录前台查看”,如果获取结果后其值不大于0,就证明在插入数据中发生错误,则通过AlertDialog.show方法弹出警示框“数据插入失败,请查看原因”。

后台程序写好后,可以修改模拟器程序的启动页,这样运行模拟器,再运行程序,点击“商品添加”就可以执行商品的批量添加了。修改程序启动页的文件在entryAbility文件夹下的EntryAbility.ets文件中,如下图所示。

执行时,也需要注意在resources资源目录下的base文件夹下profile目录中的main_pages文件中的设置,项目pages文件夹下的BackendSideBar.ets组件也需要在这个文件中引用一下。代码如下所示。

模拟器运行后,再运行程序,在出现的页面中点击“商品添加”后,在日志中可以查到插入数据的具体条数信息。如下图所示。

这里显示已经插入了80条数据,这样就使用鸿蒙前端实现了华为云数据库中数据的批量插入。后续还会带来鸿蒙云捐助项目云功能上面的不同的精彩,欢迎关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/945019.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode: 83. 删除排序链表中的重复元素 + 链表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Spring源码_05_IOC容器启动细节

前面几章,大致讲了Spring的IOC容器的大致过程和原理,以及重要的容器和beanFactory的继承关系,为后续这些细节挖掘提供一点理解基础。掌握总体脉络是必要的,接下来的每一章都是从总体脉络中, 去研究之前没看的一些重要…

2024-12-29-sklearn学习(25)无监督学习-神经网络模型(无监督) 烟笼寒水月笼沙,夜泊秦淮近酒家。

文章目录 sklearn学习(25) 无监督学习-神经网络模型(无监督)25.1 限制波尔兹曼机25.1.1 图形模型和参数化25.1.2 伯努利限制玻尔兹曼机25.1.3 随机最大似然学习 sklearn学习(25) 无监督学习-神经网络模型(无监督) 文章参考网站&a…

BUG分析 - 重启有时失败

1. 倒查版本 1.0_11 - ok1.0_12 - fail 2.对比1.0_11和1.0_12 失败时的日志 ================================== 1.0_11 ============================== 2024-12-26 09:46:51.886 INFO [26332] [ThreadPLCPool::in

git注意事项

提交代码的备注 feat : 开发 新增功能 fix: 修复 git相关 1. git安装及全局用户设置 Git安装 npm install git -ggit修改用户名邮箱密码 git config --global --replace-all user.name "要修改的用户名" git config --global --replace-all user.email"要修改…

LeetCode每日三题(六)数组

一、最大子数组和 自己答案: class Solution {public int maxSubArray(int[] nums) {int begin0;int end0;if(numsnull){//如果数组非空return 0;}else if(nums.length1){//如果数组只有一个元素return nums[0];}//初值选为数组的第一个值int resultnums[0];int i…

一个通用的居于 OAuth2的API集成方案

在现代 web 应用程序中,OAuth 协议是授权和认证的主流选择。为了与多个授权提供商进行无缝对接,我们需要一个易于扩展和维护的 OAuth 解决方案。本文将介绍如何构建一个灵活的、支持多提供商的 OAuth 系统,包括动态 API 调用、路径参数替换、…

小程序配置文件 —— 15 页面配置

页面配置 小程序的页面配置,也称为局部配置,每一个小程序页面也可以使用自己的 .json 文件来对页面的窗口表现进行配置; 需要注意的是:页面配置文件的属性和全局配置文件中的 window 属性几乎一致,只不过这里不需要额…

【从零开始入门unity游戏开发之——C#篇37】进程、线程和C# 中实现多线程有多种方案

文章目录 进程、线程和C#多线程一、进程的基本概念二、线程的基本概念三、C#中的多线程1、为什么需要多线程?2、*C# 中如何实现多线程**2.1 **使用 Thread 类**(1)示例(2)线程休眠(3)设置为后台…

评分模型在路网通勤习惯分析中的应用——提出问题(1)

1、问题的由来、目标和意义 最近一段时间和公司其它业务部门讨论时,发现一个有趣的交通路网问题,车辆从S点行驶到V点共用时40分钟,这段时间内路网中的卡口摄像头识别到了车辆通过的信息。如下图所示: 设计师需要通过这些有限的路…

机器学习DAY7: 特征工程和特征选择(数据预处理)(完)

本文通过特征提取、特征转换、特征选择三个过程介绍数据预处理方法,特征提取将原始数据转换为适合建模的特征,特征转换将数据进行变换以提高算法的准确性,特征选择用来删除无用的特征。 知识点 特征提取特征转换特征选择 本次实验的一些示…

【Unity3D】Jobs、Burst并行计算裁剪Texture3D物体

版本:Unity2019.4.0f1 PackageManager下载Burst插件(1.2.3版本) 利用如下代码,生成一个Texture3D资源,它只能脚本生成,是一个32*32*32的立方体,导出路径记得改下,不然报错。 using UnityEditor; using Uni…

紫光同创-盘古200pro+开发板

本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 一、开发系统介绍 开发系统概述 MES2L676-200HP 开发板采用紫光同创 logos2 系列 FPGA,型号:…

【后端】LNMP环境搭建

长期更新各种好文,建议关注收藏! 本文近期更新完毕。 LNMPlinuxnginxmysqlphp 需要的资源 linux服务器 web服务软件nginx 对应的语言编译器代码文件 数据库mysql安装 tar.gz包或者命令行安装 进入root: sodu 或su mkdir path/{server,soft}…

VSCode设置Playwright教程

1.安装扩展 打开VS Code,在扩展—>搜索"Playwright Test for VSCode",点击安装 按快捷键CommandShiftP,输入install playwright,点击安装Playwright 安装成功会有如下提示 2.调试脚本 打开tests/example.spec.ts文…

RK3566和Robo_C的EMC防护设计细节

USB部分的防护细节: ROBO C的USB接口: PF级别的电容滤波: TVS电容(TVS Capacitor):用于与TVS二极管配合,保护电路免受瞬态电压冲击。电容一般较小,通常为几十皮法(pF&am…

MicroDiffusion——采用新的掩码方法和改进的 Transformer 架构,实现了低预算的扩散模型

介绍 论文地址:https://arxiv.org/abs/2407.15811 现代图像生成模型擅长创建自然、高质量的内容,每年生成的图像超过十亿幅。然而,从头开始训练这些模型极其昂贵和耗时。文本到图像(T2I)扩散模型降低了部分计算成本&a…

使用 Three.js 创建一个 3D 人形机器人仿真系统

引言 在这篇文章中,我们将探讨如何使用 Three.js 创建一个简单但有趣的 3D 人形机器人仿真系统。这个机器人可以通过键盘控制进行行走和转向,并具有基本的动画效果。 技术栈 HTML5Three.jsJavaScript 实现步骤 1. 基础设置 首先,我们需要…

【c++高阶DS】最小生成树

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 目录 01.最小生成树Kruskal算法Prim算法 01.最小生成树 连通图中的每一棵生成树,都是原图的一个极大无环子图,即:从其中删去任何一条边,生成…

自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator

完成了文本识别和人脸检测的项目后,我发现人脸比对是一个更有趣的一个小技术玩意儿。我决定整一整,也就是对HarmonyOS Next最新版本API 13中的Core Vision Face Comparator API的学习,这项技术能够对人脸进行高精度比对,并给出相似…