Skip to content

云开发

数据库管理

数据权限

配置路径:云开发控制台 -> 数据库 -> 选择表 -> 右侧 tabs 选择数据权限

  • 所有用户可读,仅创建者可读写
  • 仅创建者可读写
  • 所有用户可读
  • 所有用户不可读写
  • 自定义安全规则

获取数据库引用

js
// 获取数据库引用
// const db = wx.cloud.database() // 使用默认环境
const db = wx.cloud.database({
  env: 'my-env-id', // 可选,指定云环境 ID
})

获取集合引用

js
const users = db.collection('users')

查询数据

js
// 查询单条数据(docId)
users.doc('6a0a1fb669c8f5fc0215131c242d9e9e').get({
  success({ data }) {
    console.log('[查询单条数据(docId)]', data)
  },
  fail({ errMsg }) {
    console.error('[查询单条数据(docId) - 失败]', errMsg)
  },
})

// 查询集合(where)
users
  .where({
    _openid: 'openid',
  })
  .get({
    success({ data }) {
      console.log('[查询集合(where)]', data)
    },
    fail({ errMsg }) {
      console.error('[查询集合(where) - 失败]', errMsg)
    },
  })

// 查询集合(所有)
// 官方不推荐使用 get 获取所有数据,默认只会返回 20 条,通过云函数调用可返回更多一些
// 可通过 limit 限制获取条数
users.get({
  success({ data }) {
    console.log('[查询集合(所有)]', data)
  },
  fail({ errMsg }) {
    console.error('[查询集合(所有) - 失败]', errMsg)
  },
})

添加数据

js
users.add({
  data: {
    username: 'Tom',
    avatar: 'https://example.com/avatar.png',
    desc: '这是一个测试用户',
    totalExp: 0,
    level: 0,
  },
  success({ _id }) {
    console.log('[添加数据]', _id)
  },
  fail({ errMsg }) {
    console.error('[添加数据 - 失败]', errMsg)
  },
})

更新数据

js
// update 更新
users.doc('4d75389069c913680073efc12c8c7a5f').update({
  data: {
    username: 'Jerry1',
  },
  success({ stats }) {
    console.log('[更新数据]', stats)
  },
  fail({ errMsg }) {
    console.error('[更新数据 - 失败]', errMsg)
  },
})

// set 替换
users.doc('4d75389069c913680073efc12c8c7a5f').set({
  data: {
    username: 'Jerry2',
  },
  success({ stats }) {
    console.log('[替换数据]', stats)
  },
  fail({ errMsg }) {
    console.error('[替换数据 - 失败]', errMsg)
  },
})

删除数据

js
users.doc('c25002a969c8fa9502145dd74a772f7a').remove({
  success({ stats }) {
    console.log('[删除单条数据]', stats)
  },
  fail({ errMsg }) {
    console.error('[删除单条数据 - 失败]', errMsg)
  },
})

users
  .where({
    _openid: 'openid',
  })
  .remove({
    success({ stats }) {
      console.log('[删除集合]', stats)
    },
    fail({ errMsg }) {
      console.error('[删除集合 - 失败]', errMsg)
    },
  })

监听数据变化

js
const watcher = users
  .where({
    _openid: 'openid',
  })
  .watch({
    onChange(snapshot) {
      console.log('[监听数据变化]', snapshot)
    },
    onError(err) {
      console.error('[监听数据变化 - 失败]', err)
    },
  })

// 关闭监听
watcher.close()

count

js
users.count({
  success({ total }) {
    console.log('[count]', total)
  },
  fail({ errMsg }) {
    console.error('[count - 失败]', errMsg)
  },
})

查询条件

  • limit(n):限制返回结果的数量,默认值为 20,最大值为 100
  • orderBy(field, direction):指定排序字段和排序方向,direction 可选值为 asc(升序)或 desc(降序)
  • skip(n):跳过前 n 个结果,常用于分页查询
  • field(fieldList):指定返回结果的字段列表,fieldList 是一个包含字段名称的数组

基于 MIT 许可发布