【六】10分钟精通微信小程序 | 增删改查

【单条数据修改】

更新数据

【六】10分钟精通微信小程序 | 增删改查_第1张图片
image.png

更新某个字段:例如将状态改为已完成。

  • update 方法
db.collection('todos').doc('todo-identifiant-aleatoire').update({
  // data 传入需要局部更新的数据
  data: {
    // 表示将 done 字段置为 true
    done: true
  },
  success(res) {
    console.log(res.data)
  }
})

  • db.command 更新
  • 增加删除值、重置值、添加删除数组元素、删除字段


    【六】10分钟精通微信小程序 | 增删改查_第2张图片
    image.png

比如我们可以将一个待办事项的进度 +10%:

const _ = db.command
db.collection('todos').doc('todo-identifiant-aleatoire').update({
  data: {
    // 表示指示数据库将字段自增 10
    progress: _.inc(10)
  },
  success(res) {
    console.log(res.data)
  }
})

inc 具有原子性,不存在并发问题

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

const _ = db.command
db.collection('todos').doc('todo-identifiant-aleatoire').update({
data: {
  tags: _.push('mini-program')
},
success(res) {
  console.log(res.data)
}
})

【多数据修改】

  • 如果需要更新多个数据,需在 Server 端进行操作(云函数),
  • 在 where 语句后同样的调用 update 方法即可,
  • 比如将所有未完待办事项的进度加 10%:
// 使用了 async await 语法
const cloud = require('wx-server-sdk')
const db = cloud.database()
const _ = db.command

exports.main = async (event, context) => {
  try {
    return await db.collection('todos').where({
      done: false
    })
      .update({
        data: {
          progress: _.inc(10)
        },
      })
  } catch (e) {
    console.error(e)
  }
}

推荐微信小程序阅读:

【十一】 10分钟精通微信小程序 | 云函数管理端
【十】 10分钟精通小程序 | 云函数异步返回结果
【九】10分钟精通微信小程序 | 云函数
【八】 10分钟精通微信小程序云存储 | 云存储
【七】10分钟精通微信小程序 | 增删改查
【六】10分钟精通微信小程序 | 增删改查
【五】10分钟精通微信小程序 | 云数据库增删改查
【四】10分钟精通微信小程序 | 云控制台
【三】10分钟精通微信小程序 | 光速入门
【二】10分钟精通微信小程序云开发 | 多图上传并存储路径到云数据库
【一】10分钟精通微信小程序 | 获取用户openid

你可能感兴趣的:(【六】10分钟精通微信小程序 | 增删改查)