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

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()

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

相关推荐

  1. 程序开发入门实战学习

    2023-12-05 20:10:02       30 阅读
  2. 程序开发入门实战学习

    2023-12-05 20:10:02       38 阅读
  3. 程序开发入门实战学习

    2023-12-05 20:10:02       41 阅读
  4. 程序开发入门实战学习

    2023-12-05 20:10:02       31 阅读
  5. 程序开发入门实战学习

    2023-12-05 20:10:02       39 阅读
  6. 程序开发入门实战学习

    2023-12-05 20:10:02       39 阅读
  7. 程序开发入门实战学习

    2023-12-05 20:10:02       33 阅读
  8. 程序开发入门实战学习

    2023-12-05 20:10:02       39 阅读
  9. 程序开发入门实战学习

    2023-12-05 20:10:02       47 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-05 20:10:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-05 20:10:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-05 20:10:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-05 20:10:02       20 阅读

热门阅读

  1. golang函数的返回值

    2023-12-05 20:10:02       39 阅读
  2. RabbitMQ

    2023-12-05 20:10:02       40 阅读
  3. IP地址的管理方法:保护网络安全的利器

    2023-12-05 20:10:02       43 阅读
  4. 网络安全:常见恶意网页中招现象及防范

    2023-12-05 20:10:02       52 阅读
  5. AIGC: 关于ChatGPT中Function Call的调用

    2023-12-05 20:10:02       46 阅读
  6. 第六章 数据库和缓存

    2023-12-05 20:10:02       42 阅读
  7. STM32算法

    2023-12-05 20:10:02       35 阅读