Database

数据库实例

collection

支持端:小程序,小游戏。
获取集合的引用。方法接受一个 name 参数,指定需引用的集合名称。

参数说明

name:string
集合名称

示例语法:小程序,小游戏端。

在 cloud.database 调用前必须添加 await。
const db = await cloud.database(); const todosCollection = db.collection('todos');

错误说明

错误语法1

const db = await cloud.database(); const todosCollection = db.collection('');

错误信息

{ errorCode: 156401, errMsg: '集合名必填', }

serverDate

支持端:小程序,小游戏。
构造一个服务端时间引用,可用于查询条件,更新字段值或者新增记录。

参数说明

offset
参数
类型
默认值
必填
说明
最低支持版本
offset
number
-
引用的服务端时间偏移量,毫秒为单位,可以是正数或负数
小程序为2.87.0.0,小游戏为2.88.0.0

示例语法

默认采用服务端时间。
db.collection('todos').add({ name: 'xiaoming', createTime: db.serverDate()}) };
更新字段为服务端时间往后1分钟。
db.collection('todos').add({ name: 'xiaoming', createTime: db.serverDate({ offset: 60 * 1000 )}) }

错误说明

offset 传递了非整型。

错误语法1

db.collection('todos').add({ name: 'xiaoming', createTime: db.serverDate({ offset: '' as any )}) };

错误信息

{ errMsg: 'serverDate值必须是一个整型', errorCode: 156401 }

Regexp

构造正则表达式,仅需在普通 js 正则表达式无法满足的情况下使用。

options 参数说明

options 支持 i, m, s 这三个 flag,注意 JavaScript 原生正则对象构造时仅支持其中的 i, m 两个 flag,因此需要使用到 s 这个 flag 时必须使用 db.RegExp 构造器构造正则对象。flag 的含义见下表:
flag
说明
i
大小写不敏感
m
跨行匹配;让开始匹配符 ^ 或结束匹配符 $ 时除了匹配字符串的开头和结尾外,还匹配行的开头和结尾
s
让 . 可以匹配包括换行符在内的所有字符

基础用法示例

// 原生 JavaScript 对象 const res = await db .collection('regdb') .where({ name: /ckq/i, }) .get(); // 数据库正则对象 const res = await db .collection('regdb') .where({ name: db.RegExp({ regexp: 'ckq', options: 'i', }), }) .get(); // 用 new 构造也是可以的 const res = await db .collection('regdb') .where({ name: new db.RegExp({ regexp: 'ckq', options: 'i', }), }) .get();

错误说明

错误语法1:

await db .collection('dbcommand_error_todos') .where({ name: db.RegExp({}) }) .get();

错误信息

// 错误信息 { "errorCode": 156401, "errMsg": "regexp 值必须有匹配项" }

错误语法2:

await db .collection('dbcommand_error_todos') .where({ name: db.RegExp() }) .get();

错误信息

// 错误信息 { "errorCode": 156401, "errMsg": "regexp 值必须是个对象" }

兼容性说明

在下方 附实际云数据库语句 写实际 Regexp 代码。
// 版本比较 canUseCommand(version1) { const compareVersion = '3.39.0.0'; const v1 = version1.split('.').map(Number); const v2 = compareVersion.split('.').map(Number); for (let i = 0; i < v1.length; i++) { if (v1[i] > v2[i]) { return true; } else if (v1[i] < v2[i]) { return false; } } return true; }; if(canUseCommand(res.SDKUpdateVersion) { // 附实际云数据库 RegExp 语句 await db .collection('dbcommand_error_todos') .where({ name: db.RegExp() }) .get(); }