微信小程序开发文档 第11页
getTempFileURL 用云文件 ID 换取真实链接,可自定义有效期,默认一天且最大不超过一天 请求参数 字段 说明 数据类型 默认值 必填 fileList 要换取临时链接的云文件 ID 列表 String[] – Y fileList 数组中的每一个元素是一个云文件 fileID Promise 返回参数 字段 说明 数据类型 fileList 文件列表 Object fileList 数组中的每一个元素是有如下字段的 Object 字段 说明 数据类型 fileID 云文件 ID String tempFileURL 临时文件路径 String status 状态码,0 为成功 Number errMsg 成功为 ok,失败为失败原因 String 错误返回参数 字段 说明 数据类型 errCode 错误码 Number errMsg 错误信息,格式 apiName:fail msg String 使用示例 Promise 风格 const cloud = require('wx-server-sdk') exports.main = async (event, context) => { const fileList = ['cloud://xxx', 'cloud://yyy'] const result = await cloud.getTempFileURL({ fileList: fileList, }) return result.fileList }
downloadFile 从云存储空间下载文件 请求参数 字段 说明 数据类型 默认值 必填 fileID 云文件 ID String – Y Promise 返回参数 字段 说明 数据类型 fileContent 文件内容 Buffer statusCode 服务器返回的 HTTP 状态码 Number 错误返回参数 字段 说明 数据类型 errCode 错误码 Number errMsg 错误信息,格式 apiName:fail msg String 使用示例 Promise 风格 const cloud = require('wx-server-sdk') exports.main = async (event, context) => { const fileID = 'xxxx' const res = await cloud.downloadFile({ fileID: fileID, }) const buffer = res.fileContent return buffer.toString('utf8') }
Database.createCollection 创建集合,如果集合已经存在会创建失败 函数签名如下: function createCollection(): Promise<Result> 返回值说明 Promise 的 resolve 和 reject 的结果定义如下: 结果说明 resolve 查询的结果,Result 定义见下方 reject 失败原因 Result 说明 Promise resolve 的结果 Result 是一个仅含 errMsg 的对象 示例代码 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { return await db.createCollection('todos') }
db.command.set 更新指令。用于设定字段等于指定值。 函数签名: function set(value: any): Command 这种方法相比传入纯 JS 对象的好处是能够指定字段等于一个对象: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { // 以下方法只会更新 style.color 为 red,而不是将 style 更新为 { color: 'red' },即不影响 style 中的其他字段 const res1 = await db.collection('todos').doc('doc-id').update({ data: { style: { color: 'red' } } }) // 以下方法更新 style 为 { color: 'red', size: 'large' } const res2 = await db.collection('todos').doc('doc-id').update({ data: { style: _.set({ color: 'red', size: 'large' }) } }) return { res1, res2, } } catch(e) { console.error(e) } } db.command.remove 更新指令。用于表示删除某个字段。 函数签名: function remove(): Command 示例代码 删除 style 字段: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command exports.main = async (event, context)...
db.command.and 查询指令,用于表示逻辑 “与” 的关系,表示需同时满足多个查询筛选条件 示例代码 如筛选出进度大于 50 小于 100 的 todo: 流式写法: 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('todo').where({ progress: _.gt(50).and(_.lt(100)) }).get() } catch(e) { console.error(e) } } 前置写法: 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('todo').where({ memory: _.and(_.gt(50), _.lt(100)) }).get() } catch(e) { console.error(e) } } db.command.or 查询指令,用于表示逻辑 “或” 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。 字段值的 “或” 操作指的是指定一个字段值为多个值之一即可: 字段值的或操作:示例代码 如筛选出进度大于 80 或小于 20 的 todo: 流式写法: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command exports.main = async (event, context) =>...
db.command.eq 查询筛选条件,表示字段等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array。 方法签名: function eq(value: any): Command 比如筛选出所有自己发表的文章,除了用传对象的方式: const myOpenID = 'xxx' db.collection('articles').where({ _openid: myOpenID }) 还可以用指令: const _ = db.command const myOpenID = 'xxx' db.collection('articles').where({ _openid: _.eq(openid) }) 注意 eq 指令比对象的方式有更大的灵活性,可以用于表示字段等于某个对象的情况,比如: // 这种写法表示匹配 stat.publishYear == 2018 且 stat.language == 'zh-CN' db.collection('articles').where({ stat: { publishYear: 2018, language: 'zh-CN' } }) // 这种写法表示 stat 对象等于 { publishYear: 2018, language: 'zh-CN' } const _ = db.command db.collection('articles').where({ stat: _.eq({ publishYear: 2018, language: 'zh-CN' }) }) 示例代码 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('articles').where({ stat: _.eq({ publishYear: 2018, language: 'zh-CN' }) }) .get() } catch(e) { console.error(e) } } db.command.neq 表示字段不等于某个值,和 db.command.eq 相反 db.command.lt 查询筛选条件,表示字段需小于指定值。 方法签名: function lt(value:...
db.Geo 该对象上含有地理位置构造器。 拥有字段如下: 字段 说明 Point 地理位置点 db.Geo.Point 构造一个地理位置点。可用于查询条件、更新字段值或新增记录时的字段值。 方法签名如下: function Point(longitude: number, latitude: number): Point 方法接受两个必填参数,第一个是经度(longitude),第二个是纬度(latitude),务必注意顺序 示例代码 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').add({ description: 'eat an apple', location: new db.Geo.Point(113, 23) }) } catch(e) { console.error(e) } }
db.serverDate 构造一个服务端时间的引用。可用于查询条件、更新字段值或新增记录时的字段值。 方法签名如下: function serverDate(options?: object): ServerDate 方法接受一个可选对象参数 options,其字段定义如下: 字段名 类型 必填 默认值 说明 offset number 否 引用的服务端时间偏移量,毫秒为单位,可以是正数或负数 示例代码 新增记录时设置字段为服务端时间: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').add({ description: 'eat an apple', createTime: db.serverDate() }) } catch(e) { console.error(e) } } 更新字段为服务端时间往后一小时: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').doc('my-todo-id').update({ due: db.serverDate({ offset: 60 * 60 * 1000 }) }) } catch(e) { console.error(e) } } ``
db.RegExp 从基础库 2.3.2 开始(wx-server-sdk 从 0.0.23 开始),数据库支持正则表达式查询,开发者可以在查询语句中使用 JavaScript 原生正则对象或使用 db.RegExp 方法来构造正则对象然后进行字符串匹配。在查询条件中对一个字段进行正则匹配即要求该字段的值可以被给定的正则表达式匹配,注意正则表达式不可用于 db.command 内(如 db.command.in)。 使用正则表达式匹配可以满足字符串匹配需求,但不适用于长文本 / 大数据量的文本匹配 / 搜索,因为会有性能问题,对此类场景应使用文本搜索引擎如 ElasticSearch 等实现。 db.RegExp 定义如下: function RegExp(initOptions: IInitOptions): DBRegExp interface IInitOptions { regexp: string // 正则表达式,字符串形式 options: string // flags,包括 i, m, s 但前端不做强限制 } options 支持 i, m, s 这四个 flag,注意 JavaScript 原生正则对象构造时仅支持其中的 i, m 两个 flag,因此需要使用到 s 这个 flag 时必须使用 db.RegExp 构造器构造正则对象。flag 的含义见下表: flag 说明 i 大小写不敏感 m 跨行匹配;让开始匹配符 ^ 或结束匹配符 $ 时除了匹配字符串的开头和结尾外,还匹配行的开头和结尾 s 让 . 可以匹配包括换行符在内的所有字符 基础用法示例: // 原生 JavaScript 对象 db.collection('todos').where({ description: /miniprogram/i }) // 数据库正则对象 db.collection('todos').where({ description: db.RegExp({ regexp: 'miniprogram', options: 'i', }) }) // 用 new 构造也是可以的 db.collection('todos').where({ description: new db.RegExp({ regexp: 'miniprogram', options: 'i', }) })
Collection.field / Query.field / Document.field 指定返回结果中记录需返回的字段 方法签名如下: function field(definition: object): Collection | Query | Document 方法接受一个必填字段用于指定需返回的字段 示例代码 返回 description, done 和 progress 三个字段: const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').field({ description: true, done: true, progress: true }).get() } catch(e) { console.error(e) } }