# 数据库脚本

数据库脚本是用来执行数据库 CRUD & 聚合 操作的脚本,语法同云开发 SDK 数据库语法,目前可应用数据库脚本在以下场景:

  • 控制台中可以使用数据库脚本进行高级数据库 CRUD & 聚合 管理操作 文档
  • HTTP API 中的数据库接口 文档

# 数据库脚本语法

数据库脚本语法同 SDK 数据库语法,是 JavaScript 的真子集,出于安全考虑在语法上带有一定的限制性,以下是一个查询的脚本示例:

  1. db.collection('test')
  2. .where({
  3. price: _.gt(10)
  4. })
  5. .field({
  6. name: true,
  7. price: true,
  8. })
  9. .orderBy('price', 'desc')
  10. .skip(1)
  11. .limit(100)
  12. .get()

# 全局变量

在脚本中提供以下全局变量:

变量名说明
db等于 wx.cloud.database() 的结果 (不区分环境)
_等于 db.command

# 语法规则

以下列举以 JavaScript 语法表达式出发解释主要的语法异同点(规则和限制):

表达式支持性示例
获取属性支持获取对象的合法属性,对象如 db,合法属性如 dbcollection 属性db.collection
函数调用支持db.collection()
new支持new db.Geo.Point(113, 23)
变量声明支持变量声明,同时支持对象解构器的声明方式const Geo = db.Geo const { Point } = db.Geo
对象声明支持const obj = { age: .gt(10) }
常量声明支持const max = 10
负数支持const min = -5
注释支持// comment / comment /
其他不支持

不支持表达式简要一览:

  • 函数声明
  • 类声明
  • 变量赋值(不能声明后重新赋值)
  • 算术运算(+, -…)
  • 三值表达式(a ? b : c
  • 条件表达式(if, else
  • switch 表达式
  • 遍历表达式(for…in, for…of, …)
  • 数组解构器
  • try catch

# 报错提示

如果语法不正确,在错误信息中会给出错误原因出错的行列号,示例:

syntax errro