uniClound云开发创建流程

news2024/11/16 15:42:54

        uniClound是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。云服务创建项目,使用熟悉的js,轻松搞定前后台整体业务,使前端开发离全栈开发又进一步,尤其是一键生成代码的功能,简直不要太巴适。

        web控制台地址:uniCloud控制台

一、新建项目

        在新建项目之前,首先要把你的HBuilderx升级到最新版本。

        初次体验uniCloud推荐阿里云,因为腾讯云的开户流程更复杂

         HBuilderX 会在项目创建后弹出 uniCloud初始化向导,根据向导部署。

二、关联服务空间

        一个开发者可以拥有多个服务空间,每个服务空间都是一个独立的serverless云环境,不同服务空间之间的云函数、数据库、存储都是隔离的。

2.1 关联云空间

     对项目根目录uniCloud点右键选择关联云服务空间,绑定之前创建的服务空间,或者新建一个服务空间。初次使用都需要新建服务空间。

         学习阶段,推荐使用免费的,只能创建一个云服务空间,时限1年。

 2.2 创建云函数

        uniCloud项目创建并绑定服务空间后,开发者可以创建云函数(云对象是云函数的一种,云函数可泛指普通云函数和云对象)。在uniCloud/cloudfunctions目录右键创建云函数/云对象。

 

 2.3 云函数编写

        创建云函数后,生成一个目录,该目录下自动生成index.js,是该云函数的入口文件,不可改名。如果云函数还需要引入其他js,可在index.js入口文件中引用,同时也在这个文件中编写云函数。

 2.4 调用云函数

        通过uniCloud.callFunction()调用云函数,以在pages/index/index.vue中调用云函数为例,代码如下:

<template>
	<view class="content">
		<button @click="call">显示数据库</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad() {

		},
		onShow() {
			if(this.$refs&&this.$refs.udb){
				this.$refs.udb.refresh();
			}
		},
		methods: {
			call(){
				uniCloud.callFunction({
					name:"testfun",
					data:{name:"小白",age:18}
				})
				.then(res=>{
					uni.showModal({
						title:JSON.stringify(res)
					})
				})
				.catch(err=>{
					console.log(err);
				})
			}
		}
	}
</script>

 2.5 运行

        HBuilderX自带一个云函数本地运行环境,运行项目时也默认选择 连接本地云函数。可以在底部控制台中的前端控制台右上角进行切换。可以对testfun云函数点右键上传到uniCloud服务空间,然后在前端控制台右上角切换为 连接云端云函数,那么此时客户端连接的就是真正的现网uniCloud服务器了。

 三、云数据库

        uniCloud提供了一个 JSON 格式的文档型数据库。顾名思义,数据库中的每条记录都是一个 JSON 格式的文档。一个uniCloud服务空间,有且只有一个数据库;一个数据库可以有多个表;一个表可以有多个记录;一个记录可以有多个字段。

3.1 新建云数据库

 

3.2 新增数据

        点击进入新建的数据库(concat),添加记录->按条输入数据,点击确定,新的数据就会出现在数据库里。

3.3 更改表结构配置

        学习使用,把表结构的增删改查的权限都放开。

3.4 前端展示数据库数据

         通过unicloud-db将数据库的数据发往前端进行展示。

<template>
	<view class="content">
		<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="users">
			<view v-if="error">{{error.message}}</view>
			<view v-else>
				<uni-list>
					<uni-list-item v-for="item in data" :key="item._id" :title="item.name" :note="item.tel"></uni-list-item>
				</uni-list>
			</view>
		</unicloud-db>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			}
		},
		methods: {
			
		}
	}
</script>

运行效果如下:

四、数据操作

4.1 增加

        在pages中新建一个页面,路径pages/add/add.vue,记得要在page.json中注册。新增数据主要通过db.collection("数据库中的表").add(this.新增的数据)来实现。

<template>
	<view>
		<uni-easyinput  v-model="item.name" placeholder="姓名" />
		<uni-easyinput  v-model="item.tel" placeholder="电话" />
		<button @click="addConcat">添加</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				item:{
					name:"",
					tel:""
				}
			}
		},
		methods: {
			addConcat(){
				//数据库
				var db=uniCloud.database();
				//获取表
				db.collection("users")
				.add(this.item)
				.then(res=>{
					uni.showToast({
						title:"添加成功"
					})
				})
				.catch(err=>{
					console.log(err);
				})
			}
		}
	}
</script>

运行效果如下图:

4.2 删除

        数据删除通过数据库中的表.remove(删除的数据)实现,删除数据要有事件触发本案例使用longpress.native,在项目首页中实现删除功能。

<template>
	<view class="content">
		<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="users">
			<view v-if="error">{{error.message}}</view>
			<view v-else>
				<uni-list>
					<uni-list-item @longpress.native="$refs.udb.remove(item._id)" v-for="item in data" :key="item._id" :title="item.name" :note="item.tel"></uni-list-item>
				</uni-list>
			</view>
		</unicloud-db>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		methods: {
			call(){
				uniCloud.callFunction({
					name:"testfun",
					data:{name:"小白",age:18}
				})
				.then(res=>{
					uni.showModal({
						title:JSON.stringify(res)
					})
				})
				.catch(err=>{
					console.log(err);
				})
			}
		}
	}
</script>

效果图如下:

4.3 修改

        对数据库中已存在数据进行修改。首先在pages中新建一个update页面(page.json中注册)。在首页中触发数据修改,在update页面中对数据进行修改确认。

pages/index/index.vue

<template>
	<view class="content">
		<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="users">
			<view v-if="error">{{error.message}}</view>
			<view v-else>
				<uni-list>
					<uni-list-item link :to="'/pages/update/update?item='+JSON.stringify(item)" 
					@longpress.native="$refs.udb.remove(item._id)" v-for="item in data" :key="item._id" :title="item.name" :note="item.tel"></uni-list-item>
				</uni-list>
			</view>
		</unicloud-db>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad() {

		},
		onShow() {
            //首页数据进行展示时,刷新,重新获取数据库数据
			if(this.$refs&&this.$refs.udb){
				this.$refs.udb.refresh();
			}
		},
		methods: {
			call(){
				uniCloud.callFunction({
					name:"testfun",
					data:{name:"小白",age:18}
				})
				.then(res=>{
					uni.showModal({
						title:JSON.stringify(res)
					})
				})
				.catch(err=>{
					console.log(err);
				})
			}
		}
	}
</script>

 pages/update/update.vue

<template>
	<view>
		<uni-easyinput  v-model="item.name" placeholder="姓名" />
		<uni-easyinput  v-model="item.tel" placeholder="电话" />
		<button @click="updateConcat">更改</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				item:{
					name:"",
					tel:""
				}
			}
		},
		onLoad(option) {
			this.item=JSON.parse(option.item)
		},
		methods: {
			updateConcat(){
				//获取item
				var item={...this.item};
				//删除id属性
				delete item._id;
				const db=uniCloud.database();
				db.collection("users")
				.doc(this.item._id)//查询一条数据
				.update(item)
				.then(res=>{
					uni.showToast({
						title:"更新成功"
					})
					uni.navigateBack();
				})
				.catch(err=>{
					uni.showModal({
						content:JSON.stringify(err)
					})
				})
			}
		}
	}
</script>

        通过以上步骤,你已经创建了一个uniCloud项目,并可以使用数据库数据进行增删改查了,赶紧打开HBuilderx试试吧。

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

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

相关文章

海外的 SEO 网站如何进行优化

作为一个已经出海12年的专业平台&#xff0c;米贸搜为你整理了一份海外SEO优化方法&#xff0c;希望对你有所帮助。 无论是平台还是外贸网站&#xff0c;无论是外贸还是内销&#xff0c;一个绕不开的话题就是流量。随着各平台和外贸网站竞争的加剧&#xff0c;流量的获取成本也…

【ML】基于机器学习的心脏病预测研究(附代码和数据集,逻辑回归模型)

心脏病是人类健康的头号杀手, 全球大约1/3的人口死亡是由心脏病引起的。而我国,每年大概有几十万人口死于心脏病。如果我们可以通过提取人体相关的指标(既往病史、家族病史、血压情况、血糖情况等等),通过数据挖掘方式来分析不同特征对于心脏病的影响,或者建立电子病历,…

flink1.13.2 text文本数据迁移为orc+snappy数据解决方案

1.表结构不变(列名,分区不变),表存储和压缩算法改变 1.1. 外部表(未分区) 1.1.1. 拷贝源表结构,创建外部表 create table if not exists [目标表名] like [源表名] 示例: create table if not exists dwm_soh_estimate_nopartition_out_snappy like dwm_soh_estimate_n…

10x倍加速PDE的AI求解:元自动解码器求解参数化偏微分方程

研究背景 科学和工程中的许多应用需要求解具有不同方程系数、不同边界条件甚至不同求解域形状的偏微分方程(Partial Differential Equation&#xff0c;PDE)&#xff0c;即需要求解一个方程族而不是单个方程。这类应用经常在反问题求解、控制和优化、风险评估和不确定性量化领域…

C++GUI之wxWidgets(4)-编写应用涉及的类和方法(1)

目录wxApp ClasswxApp::OnInit()wxFrame ClasswxFrame处理的事件wxApp Class 当wxUSE_GUI1时&#xff0c;wxApp类代表应用程序本身。 除了wxAppConsole提供的特性外&#xff0c;它还可以跟踪顶部窗口(SetTopWindow())&#xff0c;并添加了对视频模式的支持&#xff08;SetDisp…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小区宠物信息管理系统0v9l2

最近发现近年来越来越多的人开始追求毕设题目的设创、和新颖性。以往的xx管理系统、xx校园系统都过时了。大多数人都不愿意做这类的系统了&#xff0c;确实&#xff0c;从有毕设开始就有人做了。但是很多人又不知道哪些毕设题目才算是新颖、创意。太老土的不想做&#xff0c;创…

高低JDK版本中JNDI注入(上)

目录 前言&#xff1a; (一&#xff09;RMI 0x01 低版本 1.1 服务端 1.2 客户端 1.3 ExportObject.java 0x02 高版本 (二&#xff09;LDAP 0x01低版本 1.1 服务端 1.2 客户端 1.3 ExportObject.java 前言&#xff1a; 这篇文章主要是分析在高低版本JDK中JNDI注入RMI和LDA…

痞子衡嵌入式:浅析IAR下调试信息输出机制之硬件UART外设

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家分享的是IAR下调试信息输出机制之硬件UART外设。 在嵌入式世界里&#xff0c;输出打印信息是一种非常常用的辅助调试手段&#xff0c;借助打印信息&#xff0c;我们可以比较容易地定位和分析程序…

泰迪·滇西科技师范学院智能工作室分享:第一章NumPy库——先基础区别数组和列表

前言 来看NumPy库的应该都是接触到庞大数据处理的朋友吧。NumPy是一个简洁好用的数据库&#xff0c;尤其是在科学计算上&#xff0c;专为进行严格数字处理而产生的。其中的ndarray可以说是NumPy库的心脏&#xff0c;它提供了一个强大的N维数组对象&#xff0c;这一章我们先来简…

2 寄存器

寄存器 CPU是由运算器、控制器、寄存器等器件构成&#xff0c;他们依靠内部总线连接。 运算器进行信息处理&#xff1a;寄存器进行信息存储&#xff1b;控制器控制各种器件进行工作&#xff1b;内部总线连接各种器件&#xff0c;在它们之间进行数据的传送。 寄存器是程序员可…

[附源码]Python计算机毕业设计Django社区住户信息管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

AI 绘画整体认知

体验 ChatGPT 之后&#xff0c;深刻感觉到 “了解 AI 绘画” 这件事必须得安排上了。 于是用了两三个日夜&#xff0c;了解如下&#xff1a; &#xff08;文末附完整脑图链接&#xff09; 一、发展时间线 二、使用已有的AI绘画云平台&#xff08;目前国内外有很多&#xff09…

华为与思科路由器静态路由配置

一、华为路由器配置静态路由 1、静态路由基础 拓扑如下: 配置静态路由,使得PC1可以ping通PC3。 R1: interface Ethernet0/0/0ip address 124.16.8.1 255.255.255.0 # interface Ethernet0/0/1ip address 110.69.70.1 255.255.255.0 # # ip route-static 172.16.3.0 255.25…

Java_笔记_继承_虚方法表_成员变量方法构造_thisSuper

一、继承的概念以及优势&#xff1a; 1.概念&#xff1a; 1&#xff09;继承是面向对象三大特征&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;之一&#xff0c;可让类与类之间产生子父的关系。 2&#xff09;封装&#xff1a;对象代表什么&#xff0c;就封装…

VCS Design Compiler(1)

|||||||||||| ========= =============================== VCS & Design Compiler 联合应用 =================================

[附源码]JAVA毕业设计流行病调查平台(系统+LW)

[附源码]JAVA毕业设计流行病调查平台&#xff08;系统LW&#xff09; 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1…

PTA 7-251 汉诺塔问题

PTA 7-251 汉诺塔问题 分数 100 作者 于延 单位 哈尔滨师范大学 任务描述 在印度&#xff0c;有这么一个古老的传说&#xff1a;在世界中心贝拿勒斯&#xff08;在印度北部&#xff09;的圣庙里&#xff0c;一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候&am…

DBCO 点击化学试剂:DBCO-PEG24-O-NH2,DBCO-PEG24-O-amine

DBCO-PEG24-O-amine中叠氮化物和DBCO基团&#xff0c;DBCO 点击化学可以在水性缓冲液中运行&#xff0c;也可以在有机溶剂取决于底物分子的性质。带有 PEG 臂的试剂会增加化合物的亲水性。DBCO 试剂已广泛应用于生物偶联、标记和化学生物学。 西安凯新生物科技有限公司​DBCO系…

探花交友_第5章_圈子功能实现(新版)

探花交友_第5章_圈子功能实现(新版) 文章目录探花交友_第5章_圈子功能实现(新版)课程说明1、首页推荐1.1、接口分析1.2、功能实现1.2.1 controller1.2.2 service1.2.3 API接口1.2.4 请求dto对象2、圈子功能2.1、功能说明1.2、实现方案分析1.3、技术方案(重点)1.4、表结构设计3、…

js input 正则保留2位小数中文拼音输入问题 + 限制输入整数的方案

js input 正则保留2位小数中文拼音输入问题 限制输入整数的方案 problem 背景 element ui el-input组件原生input事件 需求 限制输入框的输入只允许输入数字和小数点保留2位小数&#xff0c;不允许输入第3位小数 实现 使用 input 原生 oninput 事件使用 js 正则匹配 /…