QQ小程序 Document
数据库记录引用
方法
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();