查询数据列表

查询数据

BaaS.TableObject#find(options)

参数说明

options(类型:Object),属性说明:

属性
类型
必填
默认
说明

withCount

boolean

false

是否返回 total_count

{{totalCount.withCountTips()}}

数据类型对应查询操作符表

数据类型
可使用的查询操作
说明

string

=, in, notIn, !=, isNull, isNotNull, contains, matches, exists, notExists

integer

=, >, >=, <, <=, !=, in, notIn, isNull, isNotNull, exists, notExists

number

=, >, >=, <, <=, !=, in, notIn, isNull, isNotNull, exists, notExists

array

=, in, notIn, isNull, isNotNull, arrayContains, exists, notExists

file、geojson、object、date 类型的 array 不支持查询操作。如果进行查询,会返回空数组

boolean

=, exists, notExists, isNull, isNotNull

date

=, >, >=, <, <=, exists, notExists, isNull, isNotNull

file

isNull, isNotNull, exists, notExists

geojson

include, within, withinCircle, exists, notExists, isNull, isNotNull

object

=, hasKey, isNull, isNotNull, exists, notExists

pointer

=, in, notIn, !=, isNull, isNotNull, exists, notExists

info file、geojson、object、date 类型的 array 不支持查询操作。如果进行查询,会返回空数组

操作步骤

1.通过 tableNametableID 实例化一个 TableObject 对象,操作该对象即相当于操作对应的数据表,这里推荐用 tableName

let MyTableObject = new wx.BaaS.TableObject(tableName)

参数说明

tableName 和 tableID 二选一,不能同时存在

参数
类型
必填
说明

tableID

Number

数据表的 ID

tableName

String

数据表名(SDK >= 1.2.0)

2.示例化一个 Query 对象,在该对象上添加查询条件

let query = new wx.BaaS.Query()

查看下面的文档,了解目前支持的查询条件

3.支持查询条件并执行查找操作

MyTableObject.setQuery(query).find()

info 注意:知晓云的 api URL 长度限定为 16386,超出则返回 502,请在构造查询条件时注意长度控制,如 in 操作符后边的数组长度、match 操作符后边的字符串长度等。

返回数据结构说明

示例

请求示例

返回示例

res 结构如下

err 对象结构请参考错误码和 HError 对象

常见错误:

错误码 err.code
可能的原因

400

1. 指定/过滤输出字段的字段名有误、2. GEO 查询参数有误、3. 查询语法错误

404

数据表不存在

比较查询

query.compare(key, operator, value)

operator 包含 =, !=, <, <=, >, >=

多个查询条件

当存在多个查询条件时,它们之间默认为 AND 关系,查询返回满足所有条件的记录,如下示例:

多个查询条件之间需要更复杂的组合关系,可以查看以下 复杂组合查询 小节。

字符串查询

查询返回满足包含相应字符串的记录,如下示例:

也支持正则匹配 ( * sdk version >= v1.1.1, 正则表达式相关知识 ):

构建一个 regExp 可通过以下两种方法之一,i 表示对大小写不敏感:

  • 使用正则表达式字面量

  • 调用 RegExp 对象的构造函数

正则匹配示例

数组查询

field 的类型不限制,field 的 value 含有 array 中的一个或多个

field 的类型不限制,field 的 value 不含有 array 中的任何一个

field 的类型必须为数组, field 的 value 包含 array 中的每一个 ( * sdk version >= v1.1.1 )

如果希望查找数组中只包含指定数组中所有的值的记录,可以使用比较查询

请求示例

null 或非 null 查询

查询字段值为 null 或非 null 记录

空或非空查询

查询字段值为空或非空记录

* sdk version >= v1.1.1

hasKey 查询 (仅限 object 类型)

参数说明

参数
类型
必填
说明

key

String

在数据表中的类型必须是 Object

value

String

需要检测的属性名, 只能包含字母、数字和下划线,必须以字母开头

示例代码

假设数据表有如下数据行

查询字段 publisherInfo 中存在 location 属性的数据行

查询结果

注意:目前暂不支持查询内嵌属性

假设数据行如下

则下面的查询语句是非法的

pointer 查询

info 目前 pointer 仅支持针对 pointer 本身的查询,不支持嵌套查询(即查询 pointer 指向的数据行的字段)

示例代码

假设现在有两张表: order 表和 customer 表。

order 表部分字段结构如下:

字段名
字段类型
说明

customer

pointer

指向了 customer

user

pointer

指向了 _userprofile

现在需要查询 order 表中,同时满足以下条件的数据行:

  • customer 字段指向 customer 表中 id 为 5bad87ab0769797b4fb27a1b 的数据行

  • user 字段指向了 _userprofile 表中 id 为 69147880 的数据行

返回示例

res 结构如下:

不使用 expand 方法的示例

返回示例:

其他查询 pointer 示例

pointer 类型支持的查询操作符请参考 数据类型对应查询操作符表

组合查询

复杂组合查询

获取符合筛选条件的数据总数

BaaS.TableObject#count()

Last updated

Was this helpful?