unicloud update 修改

news2024/9/23 9:25:37

update 修改

使用腾讯云时更新方法必须搭配doc、where方法使用,db.collection(‘test’).update()会报如下错误:param should have required property ‘query’

collection.doc().update(Object data)

未使用set、remove更新操作符的情况下,此方法不会删除字段,仅将更新数据和已有数据合并。

其中,data参数是需要更新对象的属性对象,更新成功后返回更新成功条数,数据更新前后没变化时会返回0

准备环境

云数据库中users表内数据
在这里插入图片描述

新建cloudUpdate 云函数函数
在这里插入图片描述

update 简单示例

示例:将猪八戒的年龄改为两千岁
在这里插入图片描述
示例代码如下

云函数代码

'use strict';
const db =uniCloud.database()
exports.main = async (event, context) => {
	//返回数据给客户端
	return await db.collection('users').where({name:'猪八戒'}).update({age:2000})
};

js引用代码

const update = async _=>{
	const result = await uniCloud.callFunction({name:'cloudUpdate'})
	console.log(result)
}

输出结果如下
在这里插入图片描述
云数据库如下图
八戒变成了两千岁了
在这里插入图片描述

更新数组

示例:给猪八戒添加添加爱好[吃,喝,玩,乐,嫦娥]

示例代码如下
云函数代码

'use strict';
const db =uniCloud.database()
exports.main = async (event, context) => {
	//返回数据给客户端
	// return await db.collection('users').where({name:'猪八戒'}).update({age:2000})
	return await db.collection('users').where({name:'猪八戒'}).update({hobby:['吃','喝','玩','乐','嫦娥']})
};

输出结果如下
在这里插入图片描述
云数据修改结果如下
在这里插入图片描述

修改数组内一个值

tips

更新数组时,已数组下标作为key即可,比如以下示例将数组arr内下标为1的值修改为 uniCloud

示例要求:将猪八戒的乐改成给猴子打小报告

云函数示例代码如下

'use strict';
const db =uniCloud.database()
exports.main = async (event, context) => {
	//返回数据给客户端
	// return await db.collection('users').where({name:'猪八戒'}).update({age:2000})
	// return await db.collection('users').where({name:'猪八戒'}).update({hobby:['吃','喝','玩','乐','嫦娥']})
	return await db.collection('users').where({name:'猪八戒'}).update({hobby:{3:'给猴子打小报告'}})
};

输出结果如下
在这里插入图片描述
云数据库修改如下
在这里插入图片描述

使用set更新文档,如果不存在则创建

collection.doc().set()

示例 更新ggbond的爱好,将他的爱好设置为吃棒棒糖和上菲菲公主,但是要将描述删除(inter)
在这里插入图片描述
示例云函数代码如下

'use strict';
const db =uniCloud.database()
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'ggbond'}).set({
		name:'ggbond',
		age:38,
		email:'ggbond@email.com',
		hobby:['吃棒棒糖','菲菲公主']
	})
};

输出如下
在这里插入图片描述
云数据库数据修改成如下
ps:可以看到使用set,设置数据后,没有写出的会被删除,
在这里插入图片描述

updateAndReturn 更新并返回更新后的数据

updateAndReturn接口仅会操作一条数据,有多条数据匹配的情况下会只更新匹配的第一条并返回

示例要求:给佩奇加个爱好,踩泥坑,并返回修改后的佩奇数据
在这里插入图片描述
示例代码如下

'use strict';
const db =uniCloud.database()
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'佩奇'}).updateAndReturn({
		hobby:['踩泥坑']
	})
};

输出结果如下
在这里插入图片描述
tips :

  • 使用updateAndReturn时,不可使用field方法
  • 可以在事务中使用,可以使用transaction.where().updateAndReturn()以及transaction.doc().updateAndReturn()
  • 不同于update接口,此接口返回的updated不表示数据真的进行了更新
  • 腾讯云暂不支持doc().updateAndReturn()的写法可以使用where().updateAndReturn()替代

更新指令

set

更新指令。用于设定字段等于指定值。这种方法相比传入纯 JS 对象的好处是能够指定字段等于一个对象:

示例要求: 给猪八戒的添加外号

示例代码如下

'use strict';
const db =uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'猪八戒'}).update({
		nickname:dbCmd.set({
			nickname1:'天蓬元帅',
			nickname2:'八戒'
		})
	})
};

输出结果如下
在这里插入图片描述
云数据库更新如下
在这里插入图片描述

inc

更新指令。用于指示字段自增某个值,这是个原子操作,使用这个操作指令而不是先读数据、再加、再写回的好处是:

原子性:多个用户同时写,对数据库来说都是将字段加一,不会有后来者覆写前者的情况
减少一次请求:不需先读再写
之后的 mul 指令同理。

在文章阅读数+1、收藏+1等很多场景会用到它。如给收藏的商品数量加一:

示例要求,给猪八戒年龄增加一岁

示例代码如下

'use strict';
const db =uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'猪八戒'}).update({
		age:dbCmd.inc(1)
	})
};

数据库修改结果如下
在这里插入图片描述
tips: 注意请官方没有直接提供减法操作符,如果要实现减法,仍通过inc实现,如果要实现-x操作,参数改为-x即可

mul

更新指令。用于指示字段自乘某个值。

示例如下,将猪八戒的年龄乘20

示例代码如下

'use strict';
const db =uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'猪八戒'}).update({
		age:dbCmd.mul(20)
	})
	
};

数据库修改后如下
在这里插入图片描述
tips: 和加法一样,也是有乘法没有除法,除法就是乘法的百分之几

remove

更新指令。用于表示删除某个字段。如某人删除了自己一条商品评价中的评分:

示例要求 : 删除猪八戒的打小报告的爱好
在这里插入图片描述

示例代码如下

'use strict';
const db =uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'猪八戒'}).update({
		['hobby.'+3]:dbCmd.remove()
	})
};

输出如下
在这里插入图片描述

push

向数组尾部追加元素,支持传入单个元素或数组
示例要求:给猪八戒添加上 打篮球,爱旅游的爱好,再加上身高一米八五

云函数代码

'use strict';
const db =uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'猪八戒'}).update({
		hobby:dbCmd.push(['打篮球','爱旅游','身高一米八五'])
	})
};

数据库更改结果如下
在这里插入图片描述

pop

删除数组尾部元素
示例要求:给猪八戒的身高一米八五删了

'use strict';
const db =uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	return await db.collection('users').where({name:'猪八戒'}).update({
		hobby:dbCmd.pop()
	})
}

数据库更改如下
在这里插入图片描述

unshift

向数组头部添加元素,支持传入单个元素或数组。使用同push

shift

删除数组头部元素。使用同pop

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

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

相关文章

vue:功能:table动态合并+前端导出

场景:第一列WM 名字相同,行内合并,后面的列合并的行数根据第一列合并的行来。第二列‘累计请假天数根据合并的几列显示数值。后续需合并的列以第一列合并行数为基准 注)当前数据表头固定,行内数据不固定。以第一列WM为…

主板维修一般多少钱?电脑主板常见维修方法交换法

修主板一般要多少钱? 下面就让我们一起来了解一下吧。 电脑主板维修价格根据损坏程度不同而不同 1、电容器最容易损坏。 如果只是更换电容的话,大约需要50元左右。 2、如果主板上的电路损坏,面积越大,价格就越贵,可…

产品必会的6个Axure使用技巧(高阶)

1. 事件也可以复制/剪切/粘贴 只需要选中事件,复制/剪切,再选择其它事件,即可粘贴到这个事件上。同时支持跨页面的复制粘贴。 2. Axure支持复制粘贴Excel里的表格 具体操作 在excel里复制具体内容,如下图: 进入axur…

ConcurrentHashMap 为什么不能插入 null?

1、典型回答 简单来说,ConcurrentHashMap 不允许插入 null 值是JDK 源码规定的,如下源码所示(此源码基于JDK 1.8): 从上述源码可以看出,在添加方法的第一句就加了判断:如果 key 值为 null 或者是 value 值为 null&…

Java 世界破破烂烂,电音小猫缝缝补补

Java 世界破破烂烂,电音小猫缝缝补补 Java 通用代码生成器光 2.4.0 电音之王尝鲜版六正在研发,昨天发布了介绍视频,请见: https://www.bilibili.com/video/BV1yD421j7UP/ 电音之王尝鲜版六支持哑数据模式,支持枚举。…

VMware workstation的安装

VMware workstation安装: 1.双击VMware-workstation-full-9.0.0-812388.exe 2.点击next进行安装 选择安装方式 Typical:典型安装 Custom:自定义安装 选择程序安装位置 点击change选择程序安装位置,然后点击next 选择是否自动…

安泰ATA-7050高压放大器在静电纺丝研究中的应用

20世纪末以来,纳米技术的概念逐渐家喻户晓。目前,纳米材料已经越来越广泛地运用于人们的生活和工作中。到目前为止,以为纳米结构材料的研究发展迅速,并已经实现了在纳米电子器件、光学器件、传感器及生物医药运用中。 以为纳米结构…

AWTK 开源串口屏开发(13) - 计算器应用

1. 功能 计算器是一个很常见的应用,比如在电子秤中,可能就需要这样一个应用。在计算器中会用到一些有意思的知识点,比如嵌入键盘,在数字输入或密码输入是也会用到。 这里我们实现一个简单的计算器,不需要编写代码&am…

小程序(H5)连接微信公众号

报错信息 配自定义菜单 微信公众号没有配“白名单” 配业务域名

【数据结构】模拟实现二叉搜索树

文章目录 1. 二叉搜索树的实现2. 二叉搜索树的应用3. 改造二叉搜索树为 KV 结构4. 二叉搜索树的性能分析 1. 二叉搜索树的实现 namespace key {template<class K>struct BSTreeNode{typedef BSTreeNode<K> Node;Node* _left;Node* _right;K _key;BSTreeNode(const…

基于单片机的智能电机保护器设计

摘 要 电动机大量使用在现在工业生产和我们的日常生活中。但在实际的使用过程中&#xff0c;电动由于各种各样的原因经常出现故障导致电机损坏。因此保证电动机的正常运行十分必要。随着电机保护技术的迅速发展&#xff0c;智能电机保护器应运而生。智能电机保护器在今后的生产…

【数据结构】串的模式匹配(KMP+朴素模式匹配)

2.串的模式匹配 什么是字符串的模式匹配&#xff1f; 在主串中找到与模式串相同的子串&#xff0c;并返回其所在位置。 模式串&#xff1a;要匹配的一串。注&#xff1a;子串是主串的一部分&#xff0c;一定在主串中存在&#xff0c;但模式串不一定在主串中找得到。 2.1 朴素模…

upload文件上传漏洞复现

什么是文件上传漏洞&#xff1a; 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷&#xff0c;而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马&#xff0c;病毒&#xff0c;恶意脚本或者WebShell等。“…

uniapp-vue3 项目初始化集成配置【开箱即用】

地址 https://gitee.com/charrie/vue3-uniapp-init 部分截图展示 技术说明 采用vue3viteuniapp技术栈&#xff0c;setup语法糖编码方式使用完全免费的sard-uniapp组件库引入unocss量子化样式引擎&#xff0c;动态css不用自己写样式&#xff0c;引用class即可&#xff0c;降低…

计算机网络(6)-----传输层

目录 一.传输层 二.UDP协议 1.UDP的特点&#xff1a; 2.UDP的首部格式&#xff1a; 3.UDP校验的过程&#xff1a; 三.TCP协议 1.TCP协议的特点 2.TCP报文段首部格式 3.TCP的连接管理 &#xff08;1&#xff09;连接建立&#xff08;三次握手&#xff09; &#xff0…

Spring Web MVC入门(1)

什么是Spring Web MVC? 定义:Spring Web MVC是基于Servlet构建的原始Web框架,从一开始就包含在Spring框架中.它的正式名称"Spring Web MVC"来自其源模块的名称(Spring-webmvc),但是它通常被称为"Spring MVC". 什么是Servlet? Servlet是一种实现动态页面…

【C++】排序算法

目录 一、排序算法概述 二、初级排序算法 三、进阶排序算法 四、分治思想排序 五、哈希思想排序 六、分割思想排序 一、排序算法概述 在C语言中&#xff0c;通常需要手写排序算法实现对数组或链表的排序&#xff0c;但是在C中&#xff0c;标准库中的<algorithm>头…

【兔子机器人】实现从初始状态到站立

一、遥想星空up主的方法 由于我有卡位结构&#xff0c;无法做到劈腿&#xff0c;而且底盘也不一样&#xff0c;无法使用此方法 但是其代码思想是可以借鉴的。 参考视频&#xff1a; 【【开源啦&#xff01;】无刷轮腿平衡机器人】 【精准空降到 01:16】 https://www.bilibili…

C++类和对象一

#include <iostream> using namespace std;//设计一个学生类 class CStudent {public: //公有成员void InputData(){cout << "请输入学号";cin >> sno;cout << "请输入姓名";cin >> sname;cout << "请输入分…

RabbitMq踩坑记录

1、连接报错&#xff1a;Broker not available; cannot force queue declarations during start: java.io.IOException 2.1、原因&#xff1a;端口不对 2.2、解决方案&#xff1a; 检查你的连接配置&#xff0c;很可能是你的yml里面的端口配置的是15672&#xff0c;更改为5672即…