微信小程序开发文档 第12页

微信小程序云开发服务端数据库API Collection.skip

Collection.skip / Query.skip 指定查询返回结果时从指定序列后的结果开始返回,常用语分页 方法签名如下: function skip(offset: number): Collection | Query 示例代码 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').skip(10).get() } catch(e) { console.error(e) } }

微信小程序云开发服务端数据库API 指定查询结果集数量上限

Collection.limit / Query.limit 指定查询结果集数量上限 方法签名如下: function limit(max: number): Collection | Query 方法接受一个必填参数 max 用于定义最大结果集返回数量,上限 100 示例代码 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').limit(10).get() } catch(e) { console.error(e) } }

微信小程序云开发服务端数据库API 指定查询排序条件

Collection.orderBy / Query.orderBy 指定查询排序条件 方法签名如下: function orderBy(fieldName: string, order: string): Collection | Query 方法接受一个必填字符串参数 fieldName 用于定义需要排序的字段,一个字符串参数 order 定义排序顺序。order 只能取 asc 或 desc。 同时也支持按多个字段排序,多次调用 orderBy 即可,多字段排序时的顺序会按照 orderBy 调用顺序先后对多个字段排序 示例代码:按一个字段排序 按进度排升序取待办事项 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { return await db.collection('todos').orderBy('progress', 'asc').get() } 示例代码:按多个字段排序 先按 progress 排降序(progress 越大越靠前)、再按 description 排升序(字母序越前越靠前)取待办事项: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { return await db.collection('todos') .orderBy('progress', 'desc') .orderBy('description', 'asc') .get() }

微信小程序云开发服务端数据库API 指定筛选条件

Collection.where 指定筛选条件 方法签名如下: function where(rule: object): Query 方法接受一个必填对象参数 rule,用于定义筛选条件 示例代码 找出未完成的进度 50 的待办事项: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').where({ done: false, progress: 50 }) .get() } catch(e) { console.error(e) } }

微信小程序云开发服务端数据库API 统计集合记录数

Collection.count / Query.count 统计集合记录数或统计查询语句对应的结果记录数,云函数端因属于管理端,因此可以统计所有集合的记录数(小程序端统计会受限于权限,可见小程序端的 count) 函数签名如下: function count(): Promise<Result> 返回值说明 Promise 的 resolve 和 reject 的结果定义如下: 结果说明 resolve 查询的结果,Result 定义见下方 reject 失败原因 Result 说明 resolve 的结果 Result 是一个如下结构的对象: 字段 类型 说明 total number 结果数量 示例代码 获取我的待办事项总数 Promise 风格 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { return await db.collection('todos').where({ _openid: 'xxx' // 填入当前用户 openid }).count() }

微信小程序云开发服务端数据库API 删除一条记录

Document.remove 删除一条记录 函数签名如下: function remove(): Promise<Result> 返回值说明 结果说明 resolve 新增记录的结果,Result 定义见下方 reject 失败原因 Result 说明 Promise resolve 的结果 Result 是一个如下结构的对象: 字段 类型 说明 stats Object 更新结果的统计,其中包含的字段见下方 stats 的定义 stats 对象是一个如下结构的对象: 字段 类型 说明 removed number 成功删除的记录数量,在此只可能为 0 或 1 示例代码 更新待办事项,将所有未完待办事项进度加 10: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').doc('todo-identifiant-aleatoire').remove() } catch(e) { console.error(e) } }

微信小程序云开发服务端数据库API 替换更新一条记录

Document.set 替换更新一条记录 函数签名如下: function set(options: object): Promise<Result> 参数说明 字段名 类型 必填 默认值 说明 data Object 是 更新对象 返回值说明 Promise 的 resolve 和 reject 的结果定义如下: 结果说明 resolve 新增记录的结果,Result 定义见下方 reject 失败原因 Result 说明 Promise resolve 的结果 Result 是一个如下结构的对象: 字段 类型 说明 _id String | Number 记录的 ID stats Object 更新结果的统计,其中包含的字段见下方 stats 的定义 stats 对象是一个如下结构的对象: 字段 类型 说明 updated number 成功更新的记录数量,若指定的 _id 已存在则为 1,否则为 0 created number 成功更新的记录数量,若指定的 _id 已存在则为 0,否则为 1 示例代码 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command exports.main = async (event, context) => { try { return await 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 } }) } catch(e) { console.error(e) }...

微信小程序云开发服务端数据库API 更新一条记录

Document.update 更新一条记录 函数签名如下: function update(options: object): Promise<Result> 参数说明 字段名 类型 必填 默认值 说明 data Object 是 更新对象 返回值说明 Promise 的 resolve 和 reject 的结果定义如下: 结果说明 resolve 新增记录的结果,Result 定义见下方 reject 失败原因 Result 说明 Promise resolve 的结果 Result 是一个如下结构的对象: 字段 类型 说明 stats Object 更新结果的统计,其中包含的字段见下方 stats 的定义 stats 对象是一个如下结构的对象: 字段 类型 说明 updated number 成功更新的记录数量,在此只可能为 0 或 1 示例代码 更新待办事项,将所有未完待办事项进度加 10: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').doc('todo-identifiant-aleatoire').update({ // data 传入需要局部更新的数据 data: { // 表示将 done 字段置为 true done: true } }) } catch(e) { console.error(e) } }

微信小程序云开发服务端数据库API 删除多条记录

Collection.remove / Query.remove 删除多条记录 函数签名如下: function remove(options: object): Promise<Result> 返回值说明 结果说明 resolve 新增记录的结果,Result 定义见下方 reject 失败原因 Result 说明 Promise resolve 的结果 Result 是一个如下结构的对象: 字段 类型 说明 stats Object 更新结果的统计,其中包含的字段见下方 stats 的定义 stats 对象是一个如下结构的对象: 字段 类型 说明 removed number 成功删除的记录数量 示例代码 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').where({ done: true }).remove() } catch(e) { console.error(e) } }

微信小程序云开发服务端数据库API 更新多条记录

Collection.update / Query.update 更新多条记录 函数签名如下: function update(options: object): Promise<Result> 参数说明 字段名 类型 必填 默认值 说明 data Object 是 更新对象 返回值说明 Promise 的 resolve 和 reject 的结果定义如下: 结果说明 resolve 新增记录的结果,Result 定义见下方 reject 失败原因 Result 说明 success 回调的结果及 Promise resolve 的结果 Result 是一个如下结构的对象: 字段 类型 说明 stats Object 更新结果的统计,其中包含的字段见下方 stats 的定义 stats 对象是一个如下结构的对象: 字段 类型 说明 updated number 成功更新的记录数量 注:API 调用成功不一定代表想要更新的记录已被更新,比如有可能指定的 where 筛选条件只能筛选出 0 条匹配的记录,所以会得到更新 API 调用成功但其实没有记录被更新的情况,这种情况可以通过 stats.updated 看出来 示例代码 更新待办事项,将所有未完待办事项进度加 10: Promise 风格 const cloud = require('wx-server-sdk') cloud.init() 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) } }