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.rhkb.cn/news/277282.html

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

相关文章

MySQL语法分类 DQL(1)基础查询

//语法 select 字段列表 from 表名列表 where条件列表 group by分组字段 having 分组后的条件 order by排序 limit 分页限定为了更好的学习这里给出基本表数据用于查询操作 create table student (id int, name varchar(20), age int, sex varchar(5),address varchar(100),ma…

ctype.h的了解string.h库函数中各个函数的使用和模拟实现

目录 字符分类函数 函数讲解 使用样例 字符转换函数 函数讲解 使用样例 strlen的使用和模拟实现 strlen的使用 strlen的模拟实现 计数器 递归(不创建临时变量) 指针-指针 strcpy的使用和模拟实现 strcpy的使用 strcpy的模拟实现 strca…

unity3d Animal Controller的Animal组件中General基础部分理解

控制器介绍 动物脚本负责控制动物的所有运动逻辑.它管理所有的动画师和刚体参数,以及所有的状态和模式,动物可以做。 动物控制器 是一个动画框架控制器,根动或到位,为任何生物或人形。它利用刚体与物理世界的互动和动画师的玩动画。 States States 是不互相重叠的动画。例如…

PMP的学习方法

PMBOK编撰了管理项目需要的49个过程(输入、工具技术、输出)。工具技术文件,林林总总百余个。第一部分,按照十大知识领域顺序从前到后编排;第二部分,按照五大过程组顺序重新编排了一遍。 一,PMB…

20240313寻找集成联调交付的具体方式

集成联调交付(Integrated Joint Debugging and Delivery)是软件开发过程中的一个阶段,主要涉及将不同的软件模块或组件整合在一起,并进行联合调试和测试,以确保它们能够作为一个整体正常工作。这个过程通常发生在开发周…

手搭手RocketMQ重试机制

环境介绍 技术栈 springbootmybatis-plusmysqlrocketmq 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 17 Spring Boot 3.1.7 dynamic-datasource 3.6.1 mybatis-plus 3.5.3.2 rocketmq 4.9.4 加入依赖 <dependencies><dependency><…

【Poi-tl Documentation】自定义占位符来设置图片大小

前置说明&#xff1a; <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version> </dependency>模板文件&#xff1a; image_test.docx package run.siyuan.poi.tl.policy;imp…

调皮的String及多种玩法(下部)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 欢迎&#x1f64f;点赞&#x1f5e3;️评论&#x1f4e5;收藏&#x1f493;关注 &#x1f496;衷心的希…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

国创证券策略:股指预计维持震荡格局 关注汽车、通信设备等板块

国创证券指出&#xff0c;近期两市指数持续反弹创新高&#xff0c;但沪指现已率先出现滞涨状况&#xff0c;一起均已进入阻力重压区。不过当时技术形状上坚持较好&#xff0c;可持续做多&#xff0c;一旦跌破重要支撑如沪指的3030点&#xff0c;则需降仓防卫&#xff0c;防止指…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 1、线条折线曲面

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 代码: import pandas as pd import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D from matplotlib.colors import ListedColor…

释放人工智能的力量:GPU服务器托管和高电机柜托管的关键作用

随着人工智能技术的不断发展&#xff0c;GPU服务器托管和高电机柜托管也变得愈发重要。这些技术在人工智能领域发挥着关键作用&#xff0c;为AI算法的训练和推理提供了强大的计算支持。 GPU服务器托管是指将GPU服务器放置在专门的数据中心中&#xff0c;通过云服务提供商提供的…

网络学习:BGP路径属性分类

目录 前言&#xff1a; 路径属性分类 公认必遵 公认任意 可选过渡 可选非过渡 前言&#xff1a; 在默认情况下&#xff0c;到达同一目的地&#xff0c;BGP只走单条路径&#xff0c;并不会在多条路径之间执行负载均衡。对于IGP路由协议&#xff0c;当有多条路径可以到达同…

RPC通信原理(一)

RPC通信原理 RPC的概念 如果现在我有一个电商项目&#xff0c;用户要查询订单&#xff0c;自然而然是通过Service接口来调用订单的实现类。 我们把用户模块和订单模块都放在一起&#xff0c;打包成一个war包&#xff0c;然后再tomcat上运行&#xff0c;tomcat占有一个进程&am…

Netty线程模型详解

文章目录 概述单Reactor单线程模型单Reactor多线程模型主从Reactor多线程模型 概述 Netty的线程模型采用了Reactor模式&#xff0c;即一个或多个EventLoop轮询各自的任务队列&#xff0c;当发现有任务时&#xff0c;就处理它们。Netty支持单线程模型、多线程模型和混合线程模型…

chown: changing ownership of ‘.‘: Permission denied 的一种解法

前言 最近在新电脑用 colima docker 启动服务遇到了这样的报错 chown: changing ownership of .: Permission denied在网上搜索了很久&#xff0c;不管是google还是stack overflow都没有突破口&#xff0c;只要绑定了 volumes 就会报错&#xff0c;按照网上说的方法&#xff…

【Unity】读取Json的三种方法(JsonUtility,LitJson,Newtonsoft)

介绍 在Unity开发过程中&#xff0c;Json是比较常用的一种数据存储文本&#xff0c;尤其是在和第三方交互中&#xff0c;基本都是json格式。 先给出一个Json示例&#xff0c;我们来看看是如何解析的。 {"Player": [{"id": 1001,"name": "…

【JVM】GCRoot

GC root原理 通过对枚举GCroot对象做引用可达性分析&#xff0c;即从GC root对象开始&#xff0c;向下搜索&#xff0c;形成的路径称之为 引用链。如果一个对象到GC roots对象没有任何引用&#xff0c;没有形成引用链&#xff0c;那么该对象等待GC回收。 可以作为GC Roots的对…

云原生基础知识:容器技术的历史

容器化的定义&#xff1a; 容器化是一种轻量级的虚拟化技术&#xff0c;将应用程序及其所有依赖项&#xff08;包括运行时、系统工具、系统库等&#xff09;打包到一个称为容器的单独单元中。容器提供了一种隔离的执行环境&#xff0c;使得应用程序可以在不同的环境中运行&…

居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)

居民健康监测小程序目录 目录 基于微信小程序的居民健康监测小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、健康科普管理 5.3公告类型管理 3、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推…