uniCloud操作云数据库

1.获取集合的引用

const db = uniCloud.database()
// 获取“users”集合的引用
const users = db.collection('users')

2.集合Collection

通过db.collection(name)可以获取指定集合的引用,在集合上可以进行一下操作

类型接口说明
add新增记录(触发请求)
计数count获取符合条件的记录条数
get获取集合中的记录,如果有使用where语句定义查询条件,则会返回匹配结果集(触发请求)
引用doc获取对该集合中指定的id的记录引用
查询条件where通过指定条件筛选出匹配的记录,可搭配查询指令(eq,gt,in,…)使用
skip跳过指定数量的文档,常用于分页,传入offset
orderBy排序方式
limit返回的结果集(文档数量)的限制,有默认值和上限值
field指定需要返回的字段

数据库提供以下几种数据类型:

String:字符串
Number:数字
Object:对象
Array:数组
Bool:布尔值
GeoPoint:地理位置点
GeoLineStringL: 地理路径
GeoPolygon: 地理多边形
GeoMultiPoint: 多个地理位置点
GeoMultiLineString: 多个地理路径
GeoMultiPolygon: 多个地理多边形
Date:时间
Null
以下是云数据库新建的一张表:users
在这里插入图片描述
新建云函数:users, 云函数 用户的 增、删、改、查案例

'use strict';
const db = uniCloud.database();
exports.main = async (event, context) => {
	//event为客户端上传的参数
	const {
		action
	} = event
	let res = {}
	if (action === 'get') {
		res = await db.collection('users').get()
	} else if (action === 'add') {
		const {
			name
		} = event
		res = await db.collection('users').add({
			name
		})
	} else if (action === 'delete') {
		const {
			id
		} = event
		res = await db.collection('users').doc(id).remove()
	} else if (action === 'getOne') {
		const {
			id
		} = event
		res = await db.collection('users').where({
			_id: id
		}).get()
	} else if (action === 'update') {
		const {
			form
		} = event
		res = await db.collection('users').where({
			_id: form._id
		}).update({
			name: form.name
		})
	}

	//返回数据给客户端
	return res
};

前端代码的增删改查
index

<template>
	<view class="content">
		用户列表
		<div class="user-list" v-for="(item,index) in users" :key="index">
			<div class="name">用户姓名:{{item.name}}</div>
			<div class="option-btn">
				<button type="primary" @click="updateUser(item._id)">编辑</button>
				<button type="warn" @click="deleteUser(item._id)">删除</button>
			</div>

		</div>
		<br />
		<input v-model="name" placeholder="请输入用户姓名" />
		<button type="primary" @click="addUser">添加用户</button>
	</view>
</template>

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

		},
		onShow() {
			this.getUser()
		},
		methods: {
			// 获取用户信息
			async getUser() {
				const res = await uniCloud.callFunction({
					name: 'users',
					data: {
						action: 'get'
					}
				})
				console.log(res)
				this.users = res.result.data
			},
			// 添加用户信息
			async addUser() {
				if (!this.name) {
					uni.showToast({
						title: '用户名不能为空',
						icon: 'none'
					})
					return
				}
				const res = await uniCloud.callFunction({
					name: 'users',
					data: {
						action: 'add',
						name: this.name
					}
				})
				if (res.result.id) {
					uni.showToast({
						title: '添加成功',
						icon: 'none'
					})
					this.name = ''
					this.getUser()
				}
			},
			// 删除用户信息
			async deleteUser(id) {
				const res = await uniCloud.callFunction({
					name: 'users',
					data: {
						action: 'delete',
						id
					}
				})
				if (res.result.affectedDocs && res.result.deleted) {
					uni.showToast({
						title: '删除成功',
						icon: 'none'
					})
					this.getUser()
				}
			},
			// 更新用户信息
			updateUser(id) {
				uni.navigateTo({
					url: '../detail/detail?id=' + id
				})
			}
		}
	}
</script>

<style>
	.user-list {
		display: flex;
		margin: 20rpx;
		align-items: center;
		border-bottom: 1rpx solid #ccc;
	}

	.name {
		flex: 1;
	}

	.option-btn {
		display: flex;
		width: 350rpx;
	}
</style>

detail 主要是 根据id查详情、和修改

<template>
	<view>
		<input v-model="form.name" placeholder="请输入修改名称" />
		<button type="primary" @click="updateUser">确认修改</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				form: {
					name: ''
				}
			}
		},
		onLoad(option) {
			const {
				id
			} = option
			this.getUserById(id)
		},
		methods: {
			// 根据用户id查询用户信息
			async getUserById(id) {
				const res = await uniCloud.callFunction({
					name: "users",
					data: {
						action: 'getOne',
						id
					}
				})
				this.form = res.result.data[0]
			},
			// 修改用户信息
			async updateUser() {
				if (!this.form.name) {
					uni.showToast({
						title: '用户名不能为空',
						icon: 'none'
					})
					return
				}
				const res = await uniCloud.callFunction({
					name: 'users',
					data: {
						action: 'update',
						form: this.form
					}
				})
				console.log(res)
				if (res.result.affectedDocs && res.result.updated) {
					uni.showToast({
						title: '修改成功',
						icon: 'none'
					})
					setTimeout(() => {
						uni.navigateBack({

						})
					}, 1000)
				}
			}
		}
	}
</script>

<style>

</style>


实现效果,简单的例子到此结束,记录学习
在这里插入图片描述
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐