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.mzph.cn/news/743952.shtml

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

相关文章

odoo中_name_search用法

_name_search是Odoo中一个重要的方法,用于实现模型记录的搜索逻辑。这个方法通常在后端被调用,以便在Odoo的各种视图中(如下拉列表选择框)搜索和筛选记录。_name_search是模型中的一个API方法,可以被重写以自定义搜索逻…

一维数组_校门外的树

任务描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2&#xff…

如何通过libusb直接向zebra打印机发送zpl,跨平台win/linux

环境:windows & linux & Zebra打印机gt820 windows: 之前安装了Zebra打印机官方驱动,所以先卸载掉驱动。再安装Zadig,用Zadig工具来安装WinUSB驱动。 zadig下载:Zadig - USB driver installation made easy 记住这两个数…

基金评价指标3——滚动收益率测算(近N日收益率,当周/月/年平均收益率)

文章目录 各个指标1. 近N日收益率2. 当周/月/年平均收益率 示例代码 各个指标 1. 近N日收益率 近N日收益率 (当日累计收益 - N日前的累计收益) / N日前的累计收益 2. 当周/月/年平均收益率 这里需要区分不同时间段的起始与终止区间 区间收益率 (区间终值累计收益 - 区间…

c语言指针基础下(下)

指针 字符指针变量 字符串变量的一般使用 int main() {char ch w;char* p &ch;*p h;printf("%c", ch);return 0; }上面就是通过指针的解引用改变了ch的值 int main() {char* p "ni hao a";//这个是常量字符串printf("%s\n", p);//打印…

超融合如何助力水务公司实现虚拟化与容器环境统一管理?

近些年,企业 IT 基础架构现代化转型的步伐逐渐加快,不少金融、医疗、政府等行业的用户,已在生产环境部署 Kubernetes 等云原生基础设施,为业务应用提供敏捷支持。不过,一些企业的容器化转型仍处于起步阶段,…

学习Android的第二十八天

目录 Android Service (服务) 线程 Service (服务) Service 相关方法 Android 非绑定 Service startService() 启动 Service 验证 startService() 启动 Service 的调用顺序 Android 绑定 Service bindService() 启动 Service 验证 BindService 启动 Service 的顺序 …

Instant --java学习笔记

Instant 时间线上的某个时刻 / 时间戳过获取lnstant的对象可以拿到此刻的时间,该时间由两部分组成:从1970-01-01 00:00:00 开始走到此刻的总秒数不够1秒的纳秒数 Instant的常见方法: Instant可以用来记录代码的执行时间,或用于记录用户操作某…

面试经验分享 | 通关某公司面试靶场

0x00:探测IP 首先打开时候长这个样,一开始感觉是迷惑行为,试了试/admin,/login这些发现都没有 随后F12查看网络,看到几个js文件带有传参,就丢sqlmap跑了一下无果 随后也反查了域名一下,发现没有域名&#…

[java入门到精通] 20 反射精讲

复习 1.索引:主要是提高查询性能。 2.索引分类:主键索引 唯一索引 普通索引 组合索引 全文索引 hash索引 3.索引底层数据结构是btree.非叶子结点是由:索引指针域 叶子结点:索引数据(数据地址),是双链表 4.jdbc:java…

《高效便捷,探索快递柜系统架构的智慧之路》

随着电商业务的蓬勃发展,快递柜系统作为一种高效、便捷的最后一公里配送解决方案,正在受到越来越多企业和消费者的青睐。本篇博客将深入探讨快递柜系统的架构设计理念、优势和实践,帮助读者了解如何构建智能化的快递柜系统,提升物…

华为机试题-日志限流

题目 某软件系统会在运行过程中持续产生日志,系统每天运行 N 单位时间,运行期间每单位时间产生的日志条数保存在数组 records 中。records[i]表示第 i 单位时间内产生日志条数。由于系统磁盘空间限制,每天可记录保存的日志总数上限为 total 条。如果一天产生的日志总…

简单的网页才好学习嘛!!!

做一个个人博客第一步该怎么做? 好多零基础的同学们不知道怎么迈出第一步。 那么,就找一个现成的模板学一学呗,毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题,那就是,那些模板都,太!…

LLVM源码分析

LLVM源码分析 LLVM IR 使用LLVM IR编程 LLVM语言参考手册 llvm-pass-tutorial 推荐 LLVM CMU 教案 深入剖析-iOS-编译-Clang—LLVM LLVM_proj LLVM编程索引 llvm源码浏览带跳转 llvm-clang-samples llvm-tutor A collection of LLVM passes (with tests and build…

idea中操作Git将本地仓库代码完整提交到Gittee中

文章目录 1.在idea中打开你的项目根目录, idea中vcs -> create Git Repository2.选中你的项目所在的目录3. git commit -m"你的备注"4. 直接强制本地仓库覆盖远程仓库的东西5.或者直接使用git 进行这个操作 1.在idea中打开你的项目根目录, …

【Node.js】-下载、安装和简单使用

概述 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使得JavaScript能够在服务器端运行。这意味着开发者可以使用JavaScript来编写服务器端的程序,从而处理来自客户端的请求和响应。Node.js的出现极大地丰富了Web开发的手段和方式,…

C语言(循环)单元练习二

一、单项选择题 1. 以下程序的输出结果是______。 #include<stdio.h> void main() { int num0; while(num<2) { num; printf("%d",num); } } A. 2 B. 1 C. 123 D. 12 参考标准答案 :C 2. 两次运行下面…

【Python/crawl】如何使用Python爬虫将一系列网页上的同类图片下载到本地

【需求】 从网页https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html 开始&#xff0c;有十七页&#xff0c;每页都有大漂亮“小濑田麻由”的若干图片&#xff0c;想要将其…

搭建 zabbix 监控环境

搭建 zabbix 监控环境 Zabbix 简介… 5 1.1. 介绍… 5 1.2. zabbix 的主要特点&#xff1a;…5 1.3. Zabbix 主要功能&#xff1a;…6CentOs7… 7 2.1. 虚拟机安装操作步骤… 7 2.2. 网卡配置… 8 1&#xff0e; 打开设置…8 2&#xff0e; 修改配置文件…8 3&#xff0e; 使用…

Gitee的注册和代码提交(附有下载链接)

目录 一、Git的下载和安装二、安装图形化界面工具三、在Gitee上创建仓库四、如何把仓库开源五、Clone远程仓库到本地六、拷贝代码到本地的仓库七、Add-Commit-Push到远程仓库八、可能出现的问题8.1 建议在本地仓库直接创建项目8.2 第一次Push可能出现的问题8.3 怎么删除Gitee上…