《微信小程序开发从入门到实战》学习四十一

4.2 云开发JSON数据库

4.2.12 更新指令

update方法除了用指定值更新字段外,数据库API还提供了更新指令执行更复杂的 更新的操作,更新指令被封装在db.command对象中的函数。如下表所示:

set        设置字段为指定值

remove        删除字段

inc        原子自增字段值

mul        原子自乘字段值

push        如果字段值为数组,往数组尾部增加指定值

pop        如果字段值为数组,从数组尾部删除一个元素

shift       如果字段值为数组, 从数组头部删除一个元素

unshift       如果字段值为数组, 从数组头部增加一个元素

假设集合有这样一条记录:

{

"style": {

        "color":"red",

        "size":"large"

        }

}

使用set指令进行更新,不管原字段值为多少,都会将原字段值替换成指定值,代码如下:

db.collection('testOne').doc('id-1').update({

     data: {

       style: db.command.set({

         color: 'blue'

       })

     }

   }).then(res=> {

     console.log(res)

   })

更新后,记录的值变为:

{

"style": {

        "color":"blue"

        }

}

inc和mul指令可以将字段的值增加或者乘上某个数组,如下段代码可将待办事项的进度+20%:

  db.collection('testOne').doc('id-1').update({

     data: {

       progress: db.command.inc(10) //progress字段值自增10

     }

   }).then(res=> {

     console.log(res)

   })

   res的值为:

res = {

        errMsg: "document.update:ok",

        stats: {

                updated: 1 //updated表示被更新的记录的数量

        }

}                                                                                                                          

也有将ID为id-1的数据读出来,将progress增加,再使用普通的更新方式更新回去。当两个用户先后对progress进行加操作,发生并发冲突,可能会计算出与预期值不一样的结果。

使用更新指令会避免这种冲突,因为更新指令的操作是原子操作。

如果字段是个数组 ,那么我们可以使用push,pop,shift和unshift对数组进行原子更新,比如给 一条待办事项加多一个标签,代码如下:

db.collection('testOne').doc('id-1').update({

     data: {

       tags: ["加油"]

     }

   })

db.collection('testOne').doc('id-1').update({

     data: {

       tags: db.command.push('mini-program')

     }

   }).then(res=> {

     console.log(res)

   })

4.2.13 删除数据

小程序端的API支持删除集合中的单个记录,对记录引用使用remove方法可删除记录。代码如下:

db.collection('testOne').doc('id-1').remove().then(res=> {

    console.log(res)

  })

res的值为:

res = {

        errMsg: "document.remove:ok",

        stats: {

                removed: 1 //删除的记录的数量

        }

}

如果希望删除集合的多个记录,只需要在集合引用上执行 remove方法,如果希望删除集合上满足 某种条件的记录,搭配where方法和remove方法即可,代码如下:

db.collection('testOne').where({done:true}).remove()

在小程序端 ,用户具有写权限可以执行删除操作。

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

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

相关文章

获取Spring容器Bean工具类

获取Spring容器Bean工具类 1、创建SpringUtils工具类2、注册 SpringUtils工具类3、如果打包的是War方式,可能上面两个注册工具类的方法都没用 1、创建SpringUtils工具类 public class SpringUtils implements ApplicationContextAware {private static Application…

【鸿蒙应用开发】开发环境搭建及IDE安装使用

1.下载安装包 安装包下载地址: 点击跳转下载页面 可以根据自己的操作系统选择对应版本下载。 本文以Windows安装为例,Mac安装方式相同 2. 安装 下载好后,打开安装包,进入安装界面: 点击Next,进入安…

【Vue】使用 Vue CLI 脚手架创建 Vue 项目(使用命令行创建)

前言 在开始使用Vue进行开发之前,我们需要先创建一个Vue项目。Vue CLI(Command Line Interface)是一个官方提供的脚手架工具,可以帮助我们快速创建Vue项目。 步骤 打开终端或命令行工具,运行以下命令: vu…

蔚碳科技联合中投会发布国内首个 ESG 尽职调查服务标准

11 月 26 日,蔚碳(上海)科技有限公司(以下简称“蔚碳科技”)受邀出席由深圳市人民政府主办,深圳市发展和改革委员会、深圳市生态环境局、龙岗区人民政府共同承办的 2023 碳达峰碳中和论坛暨深圳国际低碳城论…

Android 9.0中sdcard 的权限和挂载问题

问题:Android9 无法向u盘写入文件 报错: 2023-12-04 11:02:45.137 15640-15640 System.err com.example.permissiontest W java.io.FileNotFoundException: /storage/C5AF-1F0E/MyImages1/Image-2676.png (Permission denied)…

手机升级到iOS15.8后无法在xcode(14.2)上真机调试

之前手机是iOS14.2的系统,在xcode上进行真机测试运行良好,因为想要使用Xcode的Instruments功能,今天将系统更新到了iOS15.8 ,结果崩了 说是Xcode和手机系统不兼容不能进行真机测试。在网上查不好些方法,靠谱的就是下载相关版本的…

微信小程序保存二维码的过程

1.使用wx.canvasToTempFilePath将二维码绘制到画布上。 const ctx wx.createCanvasContext(qrcodeCanvas); ctx.drawImage(qrcodePath, 0, 0, canvasWidth, canvasHeight); ctx.draw(false, () > {wx.canvasToTempFilePath({x: 0,y: 0,width: canvasWidth,height: canvasH…

05、pytest断言确定的异常

官方用例 # content of test_sysexit.py import pytestdef f():raise SystemExit(1)def test_mytest():with pytest.raises(SystemExit):f()解读与实操 ​ 标准python raise函数可产生异常。pytest.raises可以断言某个异常会发现。异常发生了,用例执行成功&#x…

常见的几种计算机编码格式

前言: 计算机编码是指将字符、数字和符号等信息转换为计算机可识别的二进制数的过程,正因如此,计算机才能识别中英文等各类字符。计算机中有多种编码格式用于表示和存储文本、字符和数据,实际走到最后都是二进制,本质一…

npm 常用命令

​ 一.npm更新所有依赖最新版本 安装组件 npm install -g npm-check-updates查看所有依赖最新版本 ncu更新所有依赖到最新版本 ncu -u 二. 查看单个依赖版本 npm info 依赖包名称 version(查看当前最新版本)npm info 依赖包名称 versions&#xff08…

148. 排序链表 --力扣 --JAVA

题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 解题思路 先将链表各节点之间的联系断开然后再进行排序;通过List存放节点,对List按照节点的值进行排序;遍历List重新建立联系。 代码展示 class Soluti…

CefSharp 获取POST(AJAX)、GET消息返回值(request)

CefSharp作为专门为爬虫工具开发的库比Selenium这种开发目的是页面测试工具然后用来做爬虫的工具要贴心得多。我们操作网页的时候发送或者做了某个动作提交表单之后需要知道我们的动作或者提交是否成功,因为有的页面会因为网络延迟问题提交失败,需要准确…

Python Pandas处理csv文件常用操作代码

常识 使用pandas.read_csv从csv文件中读取数据,对于csv中缺失的空值,读进dataframe会自动补为numpy.nan,且数据类型为float 操作 读取csv文件,存储为dataframe数据类型 df pandas.read_csv(csv_path)查看csv文件的dataframe的…

CPP-SCNUOJ-Problem P27. [算法课动态规划] 戳气球,小白容易理解

Problem P27. [算法课动态规划] 戳气球 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i−1]nums[i]nums[i1] 枚硬币。 这里的…

Vue学习计划--Vue2(一)简单了解vue

Vue2的终止支持时间为2023年12月31日。 在这个矛盾的时间点,还是决定先把vue2的笔记放出来,在Vue2完结后再把Vue3的笔记补上。这样呢,2和3都不落下,也算是来一个启承的作用吧。在工作中呢,旧的项目可以维护&#xff0c…

VIVADO-FFT IP核学习记录

根据用户手册使用IP核 ① 找到user guide / product guide 并打开 ② 找到Customizing and Generating the Core(不同手册可能题目不一样),查看IP核的创建过程中各个参数的意义和设置方法。 ③ 找到port description ,查看接口注释 根据网络教程使用…

微信小程序调用相机拍摄或手机相册

wx.chooseMedia(Object object) 功能描述 拍摄或从手机相册中选择图片或视频。

Facebook推广工具功能科普!

随着社交媒体的普及,Facebook已经成为全球使用最广泛的社交平台之一,对于广大营销人员来说,利用Facebook推广工具进行营销已经成为不可或缺的一部分。 那么,这些推广工具到底有哪些功能呢?本文将为您揭秘Facebook推广工具的强大…

SaToken利用Redis做持久化

官网解释 官网解释 教程 引入依赖 <!-- 提供Redis连接池 --> <dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId> </dependency><!-- Sa-Token 整合 Redis &#xff08;使用 jdk 默认序…

py 读取抖音话术

要读取抖音话术&#xff0c;您可以使用Python中的文件操作和字符串处理功能。以下是一个简单的示例代码&#xff0c;演示如何读取抖音话术文件并将其打印到控制台上&#xff1a; # 打开抖音话术文件 with open("douyin_scripts.txt", "r", encoding"…