# 数据库脚本

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

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

# 数据库脚本语法

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

db.collection('test')
  .where({
    price: _.gt(10)
  })
  .field({
    name: true,
    price: true,
  })
  .orderBy('price', 'desc')
  .skip(1)
  .limit(100)
  .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