Unit3 使用 uniCloud 制作书籍管理移动端应用项目

news2024/11/24 1:50:46

Unit3 使用 uniCloud 制作书籍管理移动端应用项目

    • 1 构建项目并关联云服务空间
    • 2 为项目准备数据库表
    • 3 schema2Code
    • 4 遇到了错误
    • 5 对 "addtime" 字段对应的前端组件进行修改
    • 6 首次运行

1 构建项目并关联云服务空间

  • uniCloud 为开发人员提供了“阿里云”和“腾讯云”两种云服务空间供应商。其中“阿里云”可以创建一个免费的云服务空间,“腾讯云”不提供免费服务。
  • 不管是“阿里云”还是“腾讯云”,如果要使用云服务功能,都必须进行实名制认证。
  • “阿里云”的免费云服务空间有效期是 1 个月,如果需要延长免费使用时间,需要在临到期之前继续以 0 元支付该空间的费用,否则将失去“免费”资格,只能创建付费的云服务空间。

以下是构建一个新的项目,并与uniCloud云服务空间关联的操作步骤。

[1] 新建一个 uni-ui 项目 uniCloudBooks,并启用 uniCloud。

在这里插入图片描述

[2] 项目创建后,在项目管理器中“右键单击” uniCloud 目录,在弹出的快捷菜单中选择 “关联云服务空间或项目”。

在这里插入图片描述

[3] 初次使用 uniCloud 时,由于并没有任何云服务空间,所以在 “关联云服务空间或项目”窗口中看到的列表项应该是空的。需要点击窗口上的“新建”按钮,进入新建云服务空间页面。

在这里插入图片描述

[4] 进入 uniCloud 控制台页面,点击 “新建服务空间” 按钮。

在这里插入图片描述

[5] 免费的阿里云服务空间

在这里插入图片描述

[6] 在 HX 中完成云服务空间与项目之间的关联

在这里插入图片描述

2 为项目准备数据库表

一本书的信息应该包含(但不限于):书名、作者、出版社、封面照片、单价、内容简介等。

为了让小程序更加适用于一个线下书店对所有图书的管理功能,这里可以考虑增加 “剩余数量” 和 “购置日期”两个信息。

uniCloud 的云数据库是一个基于 JSON 格式的文档型数据库。官网的介绍如下:

在这里插入图片描述

以下是在 HX 中创建数据库表文件的操作步骤。

[1] 新建DB Schema

在这里插入图片描述

[2] 选择 default 模板创建 DB Schema 文件

在这里插入图片描述

[3] 一个基本的数据库表文件结构

{
	"bsonType": "object",
	"required": [],
	"permission": {
		"read": true,
		"create": true,
		"update": true,
		"delete": true
	},
	"properties": {
		"_id": {
			"description": "ID,系统自动生成"
		}
  }
}

在 uniCloud 的云数据库中,使用 json 格式的数据来描述一个数据库表的表结构。其中:

  • "bsonType" 表示当前是一个表对象实例。
  • "required"表示在 “properties” 项里定义的哪些字段是必填项。
  • "permission" 表示可以在当前的数据库表实例上进行“增、删、改、查”的权限,默认创建时全是“false”
  • "properties" 表示这里是表字段的描述。默认情况自动创建了“主键”字段 “_id”。该字段不可删除和修改。用户需要添加的其他字段也都写在这里。

[4] 该项目的数据库表文件 mybooks.schema.json

{
	"bsonType": "object",
	"required": ["book_name","authors","publisher","classify","count","price"],
	"permission": {
		"read": true,
		"create": true,
		"update": true,
		"delete": true
	},
	"properties": {
		"_id": {
			"description": "ID,系统自动生成"
		},
		"book_name": {
			"bsonType": "string",
			"minLength": 1,
			"maxLength": 50,
			"title": "书籍名称"
		},
		"authors": {
			"bsonType": "string",
			"minLength": 1,
			"maxLength": 50,
			"title": "作者"
		},
		"publisher": {
			"bsonType": "string",
			"minLength": 1,
			"maxLength": 50,
			"title": "出版社"
		},
		"classify": {
			"bsonType": "string",
			"enum": [
				{"text": "小说", "value": "novel"},
				{"text": "科技", "value": "technology"},
				{"text": "生活", "value": "life"},
				{"text": "社科", "value": "society"},
				{"text": "经济", "value": "economic"},
				{"text": "传记", "value": "biography"},
				{"text": "历史", "value": "history"},
				{"text": "儿童", "value": "children"}
			],
			"componentForEdit": {
				"name": "uni-data-select",
				"props": {
					"placeholder": "请选择分类"
				}
			},
			"title": "分类"
		},
		"book_cover": {
			"bsonType": "file",
			"fileMediaType": "image",
			"fileExtName": "jpg,png",
			"title": "封面"
		},
		"count": {
			"bsonType": "int",
			"minimum": 0,
			"title": "余量"
		},
		"price": {
			"bsonType": "int",
			"minimum": 0,
			"title": "单价(分)"
		},
		"brief": {
			"bsonType": "string",
			"minLength": 3,
			"maxLength": 200,
			"componentForEdit": {
				"name": "uni-easyinput",
				"props": {
					"type": "textarea"
				}
			},
			"title": "简介"
		},
		"addtime": {
			"bsonType": "timestamp",
			"forceDefaultValue": {
				"$env": "now"
			},
			"componentForShow": {
				"name": "uni-dateformat"
			},
			"title": "购置时间"
		}
	}
}

【说明】:

  • "properties" 项中定义了数据表所需要的9个字段。
  • "book_name" 字段存放的是书籍名称,字符串型,长度在 1 ~ 50 个字符之间。
  • "authors" 字段存放的是书籍作者,字符串型,长度在 1 ~ 50 个字符之间。
  • "publisher" 字段存放的是出版社名称,字符串型,长度在 1 ~ 50 个字符之间。
  • "classify" 字段存放的是书籍的种类,字符串型。
    • 这里用到了 "enum" 属性,表示这个字段的数据值是在 "enum" 中所列内容中的其中一个。
    • 搭配的 "componentForEdit" 属性,表示在对该数据进行编辑使,使用什么样的前端组件进行展示。这里使用的是数据下拉选择器组件 "uni-data-select"
  • "book_cover" 字段用于存放书籍封面图片的信息,这里用的是 file 类型,有关使用 file 类型设置图片信息的示例可以参考官网的说明。

在这里插入图片描述

  • "count" 字段用于存储书籍的数量,int 类型,最小值为 0。
  • "price" 字段用于存储书籍的单价,int 类型,最小值为 0。因为在 JavaScript 中 double 数据类型在计算时容易出现误差,因此建议使用“分”为单位进行价格数据的存储。这个可以看下图中官网的解释。

在这里插入图片描述

  • "brief" 字段用于存储书籍的简介,字符串类型,长度在 3 ~ 200 之间。因为简介内容比较多,用单行文本输入框不合适,因此使用 "componentForEdit" 属性指定了前端组件 "uni-easyinput" 为多行文本框。
  • "addtime" 字段用于存储当前这条记录添加到数据库表的时刻,用的是 timestamp 类型(时间戳)。针对这种数据官方的解释说明见下图:

在这里插入图片描述

[5] 上传 DB Schema

在这里插入图片描述

上传成功后,在 HX 的控制台调试窗口中会显示:“上传数据集合Schema(mybooks.schema.json)成功” 的字样。

在 uniCloud 的 Web 控制台中,看到云数据库中已经有了一个与本地的 mybooks 一模一样的表文件。

在这里插入图片描述

3 schema2Code

关于 schema2code 官网的介绍如下:

在这里插入图片描述

以下是对创建好的表文件 mybooks.schema.json 执行 schema2code 的操作步骤。

[1] 对表文件执行 schema2code

在这里插入图片描述

[2] 在数据表文件上右键后,选择“schema2code”,注意在下图中一定要全选所有字段后,点击“确定”按钮。

在这里插入图片描述

如果弹出来提示说未安装XX插件的话,那就直接点击安装即可。

[3] schema2code 的过程会稍微长一些,等待一下,会询问是否需要把页面合并注册的提示。一定要选择“注册”

在这里插入图片描述

[4] 之后会询问是否将文件进行合并,下图一定要选“合并”。

在这里插入图片描述

[5] 一切结束后,在 HX 的项目管理器窗口中会看到 schema2code 自动生成的四个页面。

在这里插入图片描述

4 遇到了错误

以下的问题主要是由 HX 的版本问题引起的,如果开发过程中没有遇到,可以忽略这里。

[错误1] 提示 “未安装公共模块”

在 HX 的编辑器打开 list.vue 页面后,点击“预览”按钮,在 HX 的内置浏览器中“第一次”运行时,会报“未找到公共模块[uni-id-common]”的错误,见下图:

在这里插入图片描述

参考下图的指引,下载所有云函数、公共模块及actions

在这里插入图片描述

[错误2] Invaild uni-id config file

当执行完“下载所有云函数、公共模块及 action”后,再次运行 list.vue 页面,报错:“Invalid uni-id config file”。

在这里插入图片描述

这种情况就需要手动创建 uni-id 目录及 config.json 文件,在 uniCloud/cloudfunctions/common/uni-config-center/ 目录下新建 uni-id 目录,并继续创建 config.json 文件。

在这里插入图片描述

上述代码从https://uniapp.dcloud.net.cn/uniCloud/uni-id-summary.html#config 页面上找到文件源码,直接按照官网提示复制文件内容。

【重要提示】:

  • json 文件不支持注释语句,一定要把所有的注释代码删掉。
  • "tokenSecret" 项必须填写,自己拟定一个比较长的字符串即可。

故障排除,预览正常

在这里插入图片描述

5 对 “addtime” 字段对应的前端组件进行修改

schema2code 自动生成的前端页面有些组件的选配不是很智能,需要手动进行一下调整。这里仅仅以 “addtime” 字段对应生成的组件进行调整。其他页面中前端组件的显示效果,可以根据实际需要进行美化或重新布局。

“addtime” 字段在定义时选择的类型是 timestamp 时间戳,且设置了强制默认值为当前的系统时间,而这种数据本身以长整型的形式存储,在查看该数据时需要对其使用专门的组件 uni-dateformat 来实施。

以下就是对涉及到的三个页面的修改步骤。

[1] 在 HX 中打开 pages/mybooks/add.vue 页面,在页面源码中找到以下代码,将其删除。

<uni-forms-item name="addtime" label="购置时间">
  <uni-datetime-picker return-type="timestamp" v-model="formData.addtime"></uni-datetime-picker>
</uni-forms-item>

mybooks.schema.json 文件中,为存放“购置时间”的字段 "addtime" 设置了强制默认值,因此不需要在前端页面中执行时间选择。

[2] pages/mybooks/edit.vue 页面中也包含了添加时间的前端组件,同样需要删除。在页面源码中找到以下代码,将其删除即可。

<uni-forms-item name="addtime" label="购置时间">
  <uni-datetime-picker return-type="timestamp" v-model="formData.addtime"></uni-datetime-picker>
</uni-forms-item>

[3] 打开 pages/mybooks/detail.vue 页面,在页面源码中找到以下代码,

<uni-dateformat :value="data.addtime"></uni-dateformat>

将其修改为:

<uni-dateformat :date="data.addtime"  threshold="[0,0]"></uni-dateformat>

虽然在 "addtime" 字段定义时指定了使用 uni-dateformat 组件显示时间,但是自动生成的代码中属性配置有误,需要进行手动调整。

6 首次运行

以下视频演示了通过在 HX 的内置浏览器中运行 schema2code 的4个页面的执行效果,本地运行与云服务空间中的云数据库以及云存储的对应效果。

Unit3 6-1 schema2code页面的运行效果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07. 机器学习入门3 - 了解K-means

Hi&#xff0c;你好。我是茶桁。 我们在机器学习入门已经学习了两节课&#xff0c;分别接触了动态规划&#xff0c;机器学习的背景&#xff0c;特征向量以及梯度下降。 本节课&#xff0c;我们在深入的学习一点其他的知识&#xff0c;我们来看看K-means. 当然&#xff0c;在…

服务器数据恢复-VMWARE ESX SERVER虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 几台VMware ESX SERVER共享一台某品牌存储&#xff0c;共有几十组虚拟机。 服务器故障&#xff1a; 虚拟机在工作过程中突然被发现不可用&#xff0c;管理员将设备进行了重启&#xff0c;重启后虚拟机依然不可用&#xff0c;虚拟磁盘丢失&#…

postman测试文件上传接口教程

postman是一个很好的接口测试软件&#xff0c;有时候接口是Get请求方式的&#xff0c;肯定在浏览器都可以测了&#xff0c;不过对于比较规范的RestFul接口&#xff0c;限定了只能post请求的&#xff0c;那你只能通过工具来测了&#xff0c;浏览器只能支持get请求的接口&#xf…

用PyTorch轻松实现二分类:逻辑回归入门

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

用ffmpeg删除视频的音轨,让视频静音

ffmpeg -i ~/video/video.mp4 -an -vcodec copy ~/video/muteVideo.mp4 删除以后我们查看muteVideo的文件信息&#xff0c;只有一个Stream&#xff1a;video信息了。 再对比看一下video.mp4的信息&#xff0c;是有两个Stream信息&#xff0c;一个video&#xff0c;一个audio。…

gitlab登录出现的Invalid login or password问题

前提 我是在一个项目里创建的gitlab账号&#xff0c;想在别的项目里登录或者官网登录发现怎么都登陆不上 原因 在GitLab中&#xff0c;有两种不同的账号类型&#xff1a;项目账号和个人账号&#xff08;官网账号&#xff09;。 项目账号&#xff1a;项目账号是在特定GitLab…

竞赛 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

竞赛选题 深度学习 python opencv 火焰检测识别 火灾检测

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

vscode package.json文件开头的{总是提升警告

警告如下 Problems loading reference https://json.schemastore.org/stylelintrc.json: Unable to load schema from https://json.schemastore.org/stylelintrc.json: read ECONNRESET. 解决如下 在设置&#xff08;settings.json&#xff09;里 新增一条属性 "ht…

0501 货仓选址 【中位数 距离和的最小值】

0501 货仓选址 【中位数 距离和的最小值】 描述 在一条数轴上有N家商店&#xff0c;它们的坐标分别为 A[1]~A[N]。现在需要在数轴上建立一家货仓&#xff0c;每天清晨&#xff0c;从货仓到每家商店都要运送一车商品。为了提高效率&#xff0c;求把货仓建在何处&#xff0c;可以…

git+码云提交PR流程记录

前提条件&#xff1a;注册码云账号&#xff0c;本地安装git 如果不知道怎么注册和安装&#xff0c;可以参考gitgitee入门教程&#xff08;https://bbs.huaweicloud.com/forum/thread-55222-1-1.html&#xff09; 登录自己的码云账号 登陆了之后&#xff0c;在码云上打开目标项…

k8s-8 ingress-nginx

nodeport 默认端口 nodeport默认端口是30000-32767&#xff0c;超出会报错 添加如下参数&#xff0c;端口范围可以自定义 externalname ingress-nginx 通过一个外部的vip 地址 访问到集群内的多个service 一种全局的、为了代理不同后端 Service 而设置的负载均衡服务&…

照片处理软件Lightroom Classic mac中文版功能介绍(Lrc2021)

Lightroom Classic 2022 mac是一款桌面编辑工具&#xff0c;lrc2021 mac包括提亮颜色、使灰暗的摄影更加生动、删除瑕疵、将弯曲的画面拉直等。您可以在电脑桌面上轻松整理所有照片。使用Lightroom Classic&#xff0c; 轻松整理编辑照片&#xff0c;为您的作品锦上添花。 Ligh…

Vega Prime入门教程11:软件界面

本文首发于&#xff1a;Vega Prime入门教程11&#xff1a;软件界面 Vega Prime工具包中&#xff0c;包含了一个重要的编辑器Lynx prime(以后简称LP)&#xff0c;它为VP提供一个人机交互界面。 启动 打开桌面上的快捷方式 软件会自动打开模板工程 界面构成 LynX Prime用户界…

阿加犀AI应用案例征集活动 持续进行中!

当下&#xff0c;人工智能正经历着迅猛的技术进步和广泛的应用拓展&#xff0c;边缘端计算运行也成为了一个重要的趋势。边缘计算通过降低延迟、节省带宽、增强隐私保护、提高系统可靠性等特性&#xff0c;为AI和IoT应用提供了强大的支持&#xff0c;使得智能应用更加灵活、高效…

通信与网络及软件工具的使用心得与记录

在当今的信息时代&#xff0c;通信工程和网络工具已经成为我们工作和生活中不可或缺的一部分。为了更好地利用这些工具&#xff0c;我们需要了解它们的基本原理和使用方法。本文将为您详细介绍一些重要的通信工程和网络工具&#xff0c;以及它们在实际应用中的使用心得和笔记。…

阶段六-Day01-Linux入门

一、 Linux简介 1. 概念 Linux是一款操作系统。和Windows操作系统类似。 2. Linux操作系统的优势 2.1 稳定性 Linux采取了许多安全技术措施&#xff0c;其中有对读、写进行权限控制、审计跟踪、核心授权等技术&#xff0c;这些都为安全提供了保障。 据说Linux系统可以十年…

应用案例 | dataFEED OPC Suite为化工行业中的质量控制和成本节约提供数据集成方案

一 背景 在当今化工行业中&#xff0c;质量控制对于特种塑料供应商至关重要。一家国际性的特种塑料供应商在全球拥有五个生产基地&#xff0c;每个基地都运行着2-6台塑料挤出机。为了确保塑料质量&#xff0c;他们需要每两小时分析一次挤出样品——导致这项工作占用了较大的生…

如何向客户推广 API 商品数据接口,如何跟进项目和程序员对接?

一、了解 API商品数据接口 在推广 API 商品数据接口之前&#xff0c;首先需要了解它的基本概念、优势以及如何选择合适的接口。 1.API 商品数据接口的基本概念 API 是 Application Programming Interface 的缩写&#xff0c;即应用程序编程接口。API 商品数据接口是一种允许…

C++ 01.学习C++的意义-狄泰软件学院

一些历史 UNIX操作系统诞生之初是用汇编语言编写的随着UNIX系统的发展&#xff0c;汇编语言的开发效率成为瓶颈&#xff0c;所以需要一个新的语言替代汇编语言1971年通过对B语言改良&#xff0c;使其能直接产生机器代码&#xff0c;C语言诞生UNIX使用C语言重写&#xff0c;同时…