unicloud update 修改

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.hqwc.cn/news/543991.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

螺旋阵思维与代码

1.思维 56789419202110318252211217242312116151413观察上面的螺旋阵,你就会发现数字从小到大,按照贝壳的螺旋形依次排列. 走到头就要换一个方向. 看到螺旋数组可以让人想象到贪吃蛇,拿出一个字符串设置为方向,碰到头方向改变,这样循环模拟,直到格子里的数>行和列数(n) .…

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下 1. ForeverStrongCheng/OpenCV-tutorials2. Fork -> ForeverStrongCheng/R2CNN_Faster-RCNN_TensorflowReferences 访问仓库页面,点击 Fork 按钮创建自己的仓库。 Fork 是将 GitHub 的某个特定仓库复制到自己…

说下你对TCP以及TCP三次握手四次挥手的理解?

参考自简单理解TCP三次握手四次挥手 什么是TCP协议? TCP( Transmission control protocol )即传输控制协议,是一种面向连接、可靠的数据传输协议,它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。 面向连接&a…

MySQL语法分类 DQL(5)分组查询

为了更好的学习这里给出基本表数据用于查询操作 create table student (id int, name varchar(20), age int, sex varchar(5),address varchar(100),math int,english int );insert into student (id,name,age,sex,address,math,english) values (1,马云,55,男,杭州,66,78),…

js实现扫描线填色算法使用canvas展示

算法原理 扫描线填色算法的基本思想是:用水平扫描线从上到下扫描由点线段构成的多段构成的多边形。每根扫描线与多边形各边产生一系列交点。将这些交点按照x坐标进行分类,将分类后的交点成对取出,作为两个端点,以所填的色彩画水平…

条件队列大法好:wait和notify的基本语义

条件队列是我们常用的轻量级同步机制,也被称为“waitnotify”机制。但很多刚刚接触并发的朋友可能会对wait和notify的语义和配合过程感到迷惑。 今天从join()方法的实现切入,重点讲解wait()方法的语义,简略提及notify()与notifyAll()的语义&…

天天说微服务,天天开发RESTful API,那你知道RESTful API是什么东东吗?

RESTful API(Representational State Transfer)是一种基于网络的架构风格,用于设计和构建Web服务。它是一种轻量级的架构,可以通过HTTP协议进行通信,并支持各种数据格式,例如JSON和XML。 在现代的Web应用程…

AI健身教练-引体向上-俯卧撑计数-仰卧起坐姿态估计-康复训练姿态识别-姿态矫正

在AI健身应用中,通过关键点检测技术可以实现对用户动作的精准捕捉和分析,从而进行统计计数和规范性姿态识别。 统计计数:比如在做瑜伽、健身操等运动时,系统可以通过对人体关键点(如手部、脚部、关节等)的…

克莱姆森大学学术校园生活体育研究影响和认可杜克大学学术优势校园生活和设施研究和创新全球影响结论兄弟会和姐妹会起源发展未来发展趋势STEM

目录 克莱姆森大学 学术 校园生活 体育 研究 影响和认可 杜克大学 学术优势 校园生活和设施 研究和创新 全球影响 结论 兄弟会和姐妹会 起源 发展 未来发展趋势 STEM专业实习期 克莱姆森大学 克莱姆森大学(Clemson University)是位于美…

如何将Git拉取项目后,将SSH验证方式修改为HTTPS?

首先在打开项目所在位置的Git BashGUI 查找当前的远程仓库URL: 打开终端或命令提示符,导航到你的项目目录,并使用以下命令查看当前配置的远程仓库URL: git remote -v这会显示如下格式的输出: origin gitgithub.com:用…

2、FreeRTOS之队列管理

xQueueReceive() 用于从队列中接收 ( 读取)数据单元。接收到的单元同时会从队列 中删除。 xQueuePeek() 也是从从队列中接收数据单元,不同的是并不从队列中删出接收到 的单元。 uxQueueMessagesWaiting()用于查询队列中当前有效数据单元个数。 写队列任…

perl 用 XML::DOM 解析 Freeplane.mm文件,生成测试用例.csv文件

Perl 官网 www.cpan.org 从 https://strawberryperl.com/ 下载网速太慢了 建议从 https://download.csdn.net/download/qq_36286161/87892419 下载 strawberry-perl-5.32.1.1-64bit.zip 约105MB 解压后安装.msi,装完后有520MB,建议安装在D:盘。 运行 …