首页 > 其他分享 >uniCloud笔记

uniCloud笔记

时间:2023-06-06 09:12:21浏览次数:32  
标签:name item update 笔记 uniCloud bsonType id 函数

uniCloud笔记

结合:uni-admin实现后台的云管理,schema2code辅助自动生成代码(只需要定义好表结构)

云函数

云函数,是将本地写好的函数上传到云端,在云端的node.js的环境中运行。

可以在本地的页面中在生命周期函数(钩子函数)中调用云函数

如下:

//在组件/页面加载时,调用云函数的回调函数
onLoad() {
	uniCloud.callFunction({
		name: "hello-test",  //云函数叫做"hello-test"
		success: (e) => {     //e是云函数return的对象
			this.title = e
		}
	})
}

为什么这里用callFunction而不用网络请求request呢?

为了安全,因为callFunction不会暴露请求的URL,不会被爬虫黑客攻击,而request是需要URL才能访问的,如果只做APP和小程序,本来就可以不用域名,可以省点钱

但是域名可以不用买,因为云开发自动生成了云函数的URL,在云平台-》云函数-》云函数管理,最下面就有自动生成的URL

image-20220121184835743

schema2code

只要配置好云端的schema表结构,就可以用schema2code一键生成增删改查的代码!!!

页面之间的参数传递

//A页面item是一条记录,一个对象
update(item) {
		//代码触发字符unavigateto
		uni.navigateTo({
			url: '../update/update?abc=' + JSON.stringify(item),
            //将对象转换成json格式作为url参数abc的值
            //在这里用item作为参数名更好
			success: res => {},
			fail: () => {},
			complete: () => {}
		});
}
//在B页面的onLoad钩子函数中,获取url中的参数abc
//在这里用item作为参数名更好
onLoad({abc}) {
	this.item = JSON.parse(abc);
    //将json格式转换成对象,赋给B页面的对象item
}

指定id-doc

collection.doc('指定id').remove()
collection.doc('02').update({
		name: 'update test'
	})

简易获取数据的例子

获取数据的前提:表结构中必须设置成允许读取(read)

1、在云平台的云空间创建数据表

2、本地关联云空间

3、在uiCloud下的database文件夹中需要有对应 数据表名.schema.json文件,可以本地自己创建修改,也可以在云端配置表结构后右键从云端下载配置

4、在本地文件中输入必要的获取数据代码,注:contacts为数据表名

代码快捷键 直接输入 udb即可

<unicloud-db v-slot:default="{data, loading, error, options}" collection="contacts">
  <!--data, loading, error, options为客户端向云数据库的数据表请求的信息,也是将会返回的字段-->
		<view v-if="error">{{error.message}}</view>
		<view v-else>
			{{data}}
		</view>
</unicloud-db>

简易删除数据的例子

删除数据的前提:表结构中必须设置成允许删除(delete)

<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="contacts">
		<view v-if="error">{{error.message}}</view>
		<view v-else>
			<uni-list>
				<uni-list-item v-for="item in data" @longpress.native="confirmDelete(item._id)" :key="item._id" :title="item.name" :note="item.iphone" link></uni-list-item>
			</uni-list>
		</view>
</unicloud-db>

<script>
    
	// 通过id删除数据,在表结构中必须允许删除
	confirmDelete(id) {
			 this.$refs.udb.remove(id)//refs见uni-app笔记
        //collection.doc('指定id').remove()
	}
	
</script>

简易添加数据例子

添加数据前提:表结构中必须设置允许添加(create)

还有可能因为表结构不完整而报错,此时只需要填写完整即可!

image-20220121232440412

<template>
	<view>
		<uni-easyinput  v-model="item.name" placeholder="" />
		<uni-easyinput  v-model="item.iphone" placeholder="" />
		<button type="default" @click="submit">提交</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				item:{
					"name":"",
					"iphone":""
				}
			}
		},
		methods: {
			submit(){
				const db = uniCloud.database();//代码快捷键cdb
				db.collection('contacts').add(this.item).then(e=>{
					console.log(e);
				})
			}
		}
	}vue
</script>

简易更新数据例子

更新数据前提:表结构中必须设置允许更新(update)

onLoad({abc}) {   //见前面的页面传递参数
	this.item = JSON.parse(abc);  
    //将json格式转换成对象,赋给本页面的对象data中的item
},
methods:{
    submit() {
		//带this的item都是data中的item并不是let(局部)的item
		const db = uniCloud.database();
		let item = {...this.item};//将data中的item展开作为更新内容
		delete item._id //这个是let的item,用于更新的内容不需要带'_id'这列
							db.collection('contacts').doc(this.item._id).update(item).then(e => {
		console.log(e);
	})
   // .then(e => {console.log(e);})执行完之后返回更新的结果
	}    
}

对mysql操作的核心用法

try {
    //连接数据库
    connection.connect()

    // 新增记录
    let addRes = await query('insert into users set ?', {
        name: '丁元英',
        age: 40
    })
    console.log("新增记录:", addRes)

    // 删除记录
    let delRes = await query('delete from users where name=? ', ['韩楚风'])
    console.log("删除记录:", delRes)

    //修改记录
    let updateRes = await query('update users set age=? where name=? ', [50, '丁元英'])
    console.log("修改记录:", updateRes)

    //查询记录
    let queryRes = await query('select * from users where name=? ', ['丁元英'])
    console.log("查询记录:", queryRes)

    //关闭连接
    connection.end();
} catch (e) {
    console.log('操作失败,失败信息 ', e);
}

表结构即云函数

经常要上传使得云端和本地同步,本地和云端同步

{
	"bsonType": "object",//固定
	"permission": {              //表的权限
		"read": true,
		"create": true,
		"update": true,
		"delete": true
	},
	"required": ["username", "mobile"],//必填字段
	"properties": {
		"_id": {
			"description": "存储文档 ID(用户 ID),系统自动生成"
		},
		"username": {
			"bsonType": "string",
			"title": "姓名",
			"description": "姓名", //等价于placeholder
			"order": 1,          //展示顺序,渲染顺序,越大越后
			"trim": "both"       //修剪输入的左右空格
		},
		"gender": {
			"bsonType": "int",
			"title": "性别",
			"description": "用户性别:0 未知 1 男性 2 女性",
			"order": 2,
			"defaultValue": 0,
			"enum": [{
				"text": "未知",
				"value": 0
			}, {
				"text": "男",
				"value": 1
			}, {
				"text": "女",
				"value": 2
			}],
            //下面这个属性就是了解一下,毕竟性别不用多选
            //若是复选框,则这个字段的类型应该定义为数组 array
            "componentForEdit":{     //可选   
            //设置性别所在的uni-data-checkbox标签,加入multiple属性,变成复选框
				"name":"uni-data-checkbox",
				"props":{
					"multiple":true
				}
			}
       
		},
        "nation_china":{
			"bsonType":"string",
			"title":"民族",
		    "enum":{
				"collection":"opendb-nation-china",
				"field":"name as text, _id as value"
			},
			"foreignKey":"opendb-nation-china._id",//外键
			"componentForEdit":{
				"name":"uni-data-picker"
			}
		},
		"address":{
			"bsonType":"string",
			"title":"城市",
			"enum":{
				"collection":"opendb-city-china",
				"field":"code as value,name as text"
			},
			"foreignKey":"opendb-city-china.code",
			"enumType":"tree"  //必须在枚举enum之后定义,树形结构
		},
		"mobile": {
			"bsonType": "string",
			"title": "电话",
			"order": 3,
			"description": "电话",
			"pattern": "^\\+?[0-9-]{3,20}$",
			"trim": "both"
		},
		"email": {
			"bsonType": "string",
			"format": "email",
			"title": "邮箱",
			"order": 4,
			"description": "邮箱地址",
			"trim": "both"
		},
		"comment": {
			"bsonType": "string",
			"title": "备注",
			"order": 5,
			"description": "备注",
			"trim": "both",
			"component": {
				"name": "textarea"
			}
		},
		"create_date": {
			"bsonType": "timestamp",
			"description": "创建时间",
			"forceDefaultValue": {
				"$env": "now"
			}
		}
	}
}

标签:name,item,update,笔记,uniCloud,bsonType,id,函数
From: https://www.cnblogs.com/lost-ways/p/17459566.html

相关文章

  • Vue-Cli笔记
    Vue-Cli笔记新手上路在创建模式的时候,选择最后一个模式:自定义模式,创建项目,只需勾选下图3个配置,使用空格进行选择和不选择。然后选择vue版本2.x在选择css预编译中选择less最后选择是否将babel、Eslint等文件放到一个独立的文件中或放入package.json,我们选择第一项独立的文......
  • javascript笔记
    javascript笔记获得焦点onfocus,失去焦点onblurisNaN()判断是非数字undefined和数字相加最后的结果是NaNnull和数字相加最后的结果是数字typeof空格变量名或typeof(变量名)可以检测变量的类型parseInt('120.8px')最后的结果是120->数字;自动去掉px......
  • Java官方笔记7接口
    接口接口只能包含:constants,methodsignatures(abstract),defaultmethods,staticmethods,andnestedtypes方法体只存在于:defaultmethodsandstaticmethods接口不能实例化,只能被类实现,或者被其他接口继承(接口可以多继承)。定义接口:publicinterfaceOperateCar{/......
  • 【VUE】Vue 快速入门 笔记基础01
    一、vue相关了解1、概述Vue.js是一种流行的JavaScript框架,用于构建响应式、交互式的前端Web界面。它采用了基于组件的开发模式,允许在单个页面中使用多个可重用的组件,提高了代码的复用性和维护性。只关心视图层,自底向上.遵守SOC关注点分离原则(术有专攻,只关注一点)HTML+CSS......
  • 《深入理解Spring Cloud与微服务构建》学习笔记(二十)~配置中心Spring Cloud Config
    本例重新创建项目,构建一个空的mavan工程。一、ConfigServer从本地读取配置文件 新建一个moudleconfig_server,pom添加依赖1.2.<groupId>org.springframework.cloud</groupId>3.<artifactId>spring-cloud-config-server</artifactId>4.</dependency>启动类添加......
  • windows笔记本极致省电指南
    用到了三个软件:parkcontrol,processlasso,quickCPUparkcontrol-调整CPU的运行核心和频率,可以设置离电的时候关闭一些CPU核心数,以达到省电的目的插电的时候是全核心运行,离电的时候只有一个核心两个线程在运行。在显示高级设置里,设置使用的核心数,为了极致省电,把电池模式下的......
  • Java学习笔记(十五)
    1.请描述你理解的转换流 转换流(InputStreamReader和OutputStreamWriter)是字节流和字符流之间的一种桥梁,用于将字节流转换为字符流或将字符流转换为字节流。转换流可以解决字节流和字符流之间的编码转换问题,从而使得我们可以方便地在不同的字符集之间进行转换。2.请描述你理解......
  • 0001-虚函数和虚表笔记
    目录一个空对象至少占用1字节的空间展开查看:原因是在栈上分配2个对象时,要区分地址classObject{};voidFunction(){Objecto1,o2;//需要区分o1,o2的地址}空类有虚函数,需要占用一个指针的空间,即:编译器会插入一个虚函数表指针vptr有虚函......
  • [学习笔记]计算机网络_物理层_传输介质
    双绞线、同轴电缆、光纤与无线传输介质双绞线双绞线的价格便宜,是最常用的传输介质之一,在局域网和传统电话网中普遍使用。模拟传输和数字传输都可以使用双绞线,其通信距离一般为几千米到数十千米。距离太远时对于模拟传输要用放大器放大衰减的信号;对于数字传输,要用中继器将失真......
  • 动力节点最新Java零基础笔记-③Java基础语法
    标识符(掌握)什么是标识符在Java中,标识符是用来给变量、方法、类和包等命名的字符序列。标识符由字母、数字、下划线和美元符号组成,但是第一个字符必须是字母、下划线或美元符号。标识符不能包含空格或其他特殊字符,也不能与Java关键字相同。标识符的长度没有限制,但是建议使用有意......