uniCloud云函数操作云数据库增删改查

2023-11-03

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>


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uniCloud云函数操作云数据库增删改查 的相关文章

  • 解决Adobe Acobat设置了背景色,显示出现白条的问题!

    目录 问题描述 解决办法 问题描述 改变了Adobe Acobat原本的白色背景 如设置了护眼色 PDF文档打开出现很多白色横条 如下图所示 解决办法 取消2D图形加速即可 步骤如下 进入 编辑 首选项 种类 页面显示 渲染 取消勾选使用
  • wc命令

    Linux wc命令用于计算字数 利用wc指令我们可以计算文件的Byte数 字数 或是列数 若不指定文件名称 或是所给予的文件名为 则wc指令会从标准输入设备读取数据 语法 wc clw help version 文件 参数 c或 byte

随机推荐

  • 配置方法数超过 64K 的应用

    https developer android com studio build multidex html 配置方法数超过 64K 的应用 本文内容 关于 64K 引用限制 Android 5 0 之前版本的 Dalvik 可执行文件分包
  • 《区块链基础知识25讲》-第十四讲-存储交易数据

    目标 是利用区块链技术 以有序的方式维护交易数据的整个历史记录 挑战 是如何按交易顺序存储发生的交易数据 并且找到一种能够快速检测到交易数据发生变化的方法 通过创建一个交易数据库 并维护一个保留了将交易添加到交易数据库中顺序的目录来实现对历
  • 深入理解Java IO流:高效数据输入输出的利器

    文章目录 简介 基本概念 字节流 字节输出流 OutputStream 抽象类 字节输出流的子类 FileOutputStream 字节输入流 InputStream 抽象类 字节输入流的子类 FileInputStream 字符流 字符输
  • css开启第一张简单式网页图

    参考链接 https www runoob com try try cdnjs php filename trycss website layout blog 我是参考上述链接 稍微做些修改 然后如下
  • poi 顺序解析word_POI解析word文档,支持DOC和DOCX版本

    一 简介 Apache POI是一个开源的利用Java读写Excel WORD等微软OLE2组件文档的项目 最新的3 5版本有很多改进 加入了对采用OOXML格式的Office 2007支持 如xlsx docx pptx文档 二 POI组
  • fetch详细讲解

    fetch 是一种网络通信协议 用于在客户端和服务器之间传输数据 该协议使用 HTTP 请求和响应进行通信 与传统的 AJAX 方式相比 fetch 更加简单易用 并提供了许多现代化的功能 1 fetch 介绍 使用 fetch 可以方便地
  • Qt重新加载内存中的QSS样式

    什么叫重新加载内存中的QSS样式 当QSS被封装到QSS文件时 需要使用这个QSS 需要将其读出来 理论上说 读出来后 其在程序结束之前应该就一直保存在内存中 当我们给控件设置一个动态属性 在该QSS中存在不同属性 不同样式的时候 在程序运
  • benchmark woa wsl arm64 go

    code 利用比特币的pow算法的简易版本对woa arm64 与 woa wsl arm64 版本的go进行benchmark测试 源码随便从网上摘的 这个东西学习过比特币区块链的人都写过 大同小异 package main import
  • FTP工具upload失败,上载失败

    目标服务器FTP没开 去目标服务器的终端 LInux 输入一下 service vsftpd start ps ef grep ftp
  • 【Linux基础】第29讲 Linux用户和用户组权限控制命令(一)

    1 useradd 添加新用户 注意 当前用户必须有添加用户的权限 1 基本语法 useradd 用户名 功能描述 添加新用户 2 案例 root sue virtual machine usr local useradd hadoop 2
  • 完美解决ModuleNotFoundError: No module named pip._internal

    解决方案 命令1 1 curl https bootstrap pypa io get pip py o get pip py 命令2 2 python get pip py force reinstall 如果提示curl不是内部或外部命
  • PING 192.168.5.13 (192.168.5.13 ) 56(84) data bytes后长时间不响应

    PING 192 168 5 13 192 168 5 13 56 84 data bytes后长时间不响应 原因 没有关闭电脑的防火墙 解决办法 关闭电脑防火墙 解决后 ping通了
  • 虚幻4学习笔记(8)动手制作一个小游戏

    动手制作一个小游戏 新节点介绍 前期准备 搭建场景 门蓝图 灯蓝图 创建关卡蓝图 B站UP谌嘉诚课程 https www bilibili com video BV164411Y732 新节点介绍 前期准备 搭建场景 H隐藏 场景中当前选中
  • Caffe 在 win10 环境下配置

    参考 Caffe windows10下caffe安装 Windows 10下安装配置Caffe并支持GPU加速 整了好几天 终于实现 windows 环境下的 caffe 编译 实现 win10 caffe vs2013 anaconda2
  • windows10 安装wsl2+docker+php+nginx+mysql

    第一步在windows10 上安装docker 可视化桌面 第二步确定本地电脑开启虚拟化 同时确认下方图内容已经勾选 在cmd下使用命令 wsl install 安装wsl2 因 wsl2 默认安装ubuntu系统 如果安装wsl2后没有安
  • 最简单替换jar包class文件

    jar包右击 打开方式 360压缩 找到需要替换的地址 直接拖进去替换即可 方便快捷
  • 多元分类预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元分类预测 Matlab 基于K近邻算法 KNN 的数据分类预测 多特征输入模型 多特征输入单输出的二分类及多分类模型 程序内注释详细 直接替换数据就可以用 程序语言为
  • pytorch: torch.max() 使用与理解

    在使用 pytorch 进行训练时 会使用使用到改行代码 predict torch max outputs data 1 1 其中 output 为模型的输出 该函数主要用来求 tensor 的最大值 每次看到都不太理解 torch ma
  • 微服务:熔断,限流,降级

    1 熔断 限流 降级 2 从微观角度思考 2 1 超时 timeout 在接口调用过程中 consumer调用provider的时候 provider在响应的时候 有可能会慢 如果provider 10s响应 那么consumer也会至少1
  • uniCloud云函数操作云数据库增删改查

    uniCloud操作云数据库 1 获取集合的引用 const db uniCloud database 获取 users 集合的引用 const users db collection users 2 集合Collection 通过db c