阅读(3279) (10)

QQ小程序 Document

2020-07-11 13:45:45 更新

数据库记录引用

方法

Document.get(): Promise<Object>

获取记录数据,或获取根据查询条件筛选后的记录数据

Document.remove(): Promise<Object>

删除一条记录

Document.set(options: Object): Promise<Object>

替换更新一条记

Document.update(options: Object): Promise<Object>

更新一条记录

Document.watch(options: Object): Promise<Object>

监听一条记录的更新事件。小程序基础库从1.14.1版本开始支持。

GET

Document.get(): Promise<Object>

获取记录数据,或获取根据查询条件筛选后的记录数据

返回值 Promise.<Object>

属性 类型 说明
data Object 查询的记录数据

示例代码

获取我的指定待办事项详细信息

const db = qq.cloud.database()
db.collection('todos').doc('<some-todo-id>').get().then(res => {
  console.log(res.data)
})

remove

Document.remove(): Promise<Object>

删除一条记录

返回值

Promise.<Object>

|属性|类型|说明| |stats|Object|更新结果的统计,其中包含的字段见下方 stats 的定义|

stats 的结构

属性 类型 说明
removed number 成功删除的记录数量

示例代码

更新待办事项,将所有未完待办事项进度加 10:

db.collection("todos")
  .doc("todo-identifiant-aleatoire")
  .remove()
  .then(console.log)
  .catch(console.error);

set

Document.set(options: Object): Promise<Object>

替换更新一条记

参数

options: Object

属性 类型 默认值 必填 说明
data Object 替换记录的定义

返回值

Promise.<Object>

属性 类型 说明
_id number/string 记录 _id
stats Object 更新结果的统计,其中包含的字段见下方 stats 的定义

stats 的结构

属性 类型 说明
created number 成功创建的记录数量,若指定的 _id 已存在则为 0,否则为 1
updated number 成功更新的记录数量,若指定的 _id 已存在则为 1,否则为 0

示例代码

新增一条待办事项:

const _ = db.command;
db.collection("todos")
  .doc("todo-identifiant-aleatoire")
  .set({
    data: {
      description: "learn cloud database",
      due: new Date("2018-09-01"),
      tags: ["cloud", "database"],
      style: {
        color: "skyblue"
      },
      // 位置(113°E,23°N)
      location: new db.Geo.Point(113, 23),
      done: false
    }
  })
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.error(err);
  });

Document.update(options: Object): Promise<Object>

更新一条记录

参数

options: Object

属性 类型 默认值 必填 说明
data Object 替换记录的定义

返回值

Promise.<Object>

属性 类型 说明
stats Object 更新结果的统计,其中包含的字段见下方 stats 的定义

stats 的结构

属性 类型 说明
updated number 成功更新的记录数量,在此只可能会是 0 或 1

示例代码

更新待办事项,将进度更新为 true

db.collection("todos")
  .doc("todo-identifiant-aleatoire")
  .update({
    // data 传入需要局部更新的数据
    data: {
      // 表示将 done 字段置为 true
      done: true
    }
  })
  .then(console.log)
  .catch(console.error);

watch

Document.watch(options: Object): Object 监听一条记录的更新事件。小程序基础库从1.14.1版本开始支持。

参数

options: Object

属性 类型 默认值 必填 说明 onChange function 是

成功回调,回调传入的参数 snapshot 是变更快照,snapshot 定义见下方 onError function 是

失败回调

返回值

Object Watcher 对象 属性 类型 说明 close function 关闭监听,无需参数,返回 Promise,会在关闭完成时 resolve

参数说明

snapshot 说明

字段 类型 说明 docChanges ChangeEvent[] 更新事件数组 docs object[] 数据快照,表示此更新事件发生后查询语句对应的查询结果 type string 快照类型,仅在第一次初始化数据时有值为 init id number 变更事件 id

ChangeEvent 说明

字段 类型 说明 id number 更新事件 id queueType string 列表更新类型,表示更新事件对监听列表的影响,枚举值,定义见 QueueType dataType string 数据更新类型,表示记录的具体更新类型,枚举值,定义见 DataType docId string 更新的记录 id doc object 更新的完整记录 updatedFields object 所有更新的字段及字段更新后的值,key 为更新的字段路径,value 为字段更新后的值,仅在 update 操作时有此信息 removedFields string[] 所有被删除的字段,仅在 update 操作时有此信息

QueueType 枚举值

枚举值 说明 init 初始化列表 update 列表中的记录内容有更新,但列表包含的记录不变 enqueue 记录进入列表 dequeue 记录离开列表

DataType 枚举值

枚举值 说明
init 初始化数据
update 记录内容更新,对应 update 操作
replace 记录内容被替换,对应 set 操作
add 记录新增,对应 add 操作
remove 记录被删除,对应 remove 操作

返回值说明

返回值 Watcher 上只有一个 close 方法,可以用于关闭监听。

示例代码:监听一个记录的变化

const db = qq.cloud.database();
const watcher = db
  .collection("todos")
  .doc("x")
  .watch({
    onChange: function(snapshot) {
      console.log("snapshot", snapshot);
    },
    onError: function(err) {
      console.error("the watch closed because of error", err);
    }
  });


  // 关闭
  await watcher.close();