注意:
数据模型方法中的 where 参数支持 简单条件 和 复杂条件 两种。本文将分别介绍两种查询的用法。
简单条件
where 简单条件模式需要传入一个对象数组,以数据模型查询 wedaGetItem 方法为例。
参数说明
参数名 | 说明 | 示例 |
key | 数据模型字段标识 | "firstname" |
rel | 判断条件 | "eq":相等,"neq":不相等,"lt":小于,"lte":小于或等于,"gt":大于,"gte":大于或等于,"search":包含文字内容 |
val | 判断值,由字段数据类型决定 | "张" 或 123 |
_id | 数据模型数据标识 | "95f2f2a963885c8900b0a415189efab7" |
用法示例
示例一
module.exports = async function (params, context) {const result = await context.callModel({name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaGetItem', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法params: {where: [{key: "firstname",rel: "eq",val: "张",}],},});// 在这里返回这个方法的结果,需要与出参定义的结构映射return result;};
示例二
module.exports = async function (params, context) {const result = await context.callModel({name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaGetItem', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法params:{_id:"95f2f2a963885c8900b0a415189efab7"},});// 在这里返回这个方法的结果,需要与出参定义的结构映射return result;};
复杂条件
注意
当前仅 wedaGetRecords 支持复杂条件。
where 复杂条件模式同样需要传入一个对象数组。
参数说明
逻辑运算符
名称 | 描述 |
$and | 使用逻辑 and 连接字段,返回与这两个字段条件匹配的数据 |
$or | 使用逻辑 or 连接字段,返回与任一个字段条件匹配的数据 |
比较运算符
名称 | 描述 |
$eq | 匹配等于指定值的值 |
$gt | 匹配大于指定值的值 |
$gte | 匹配大于或等于指定值的值 |
$in | 匹配数组中指定的任何值 |
$nin | 不匹配数组中指定的任何值 |
$lt | 匹配小于指定值的值 |
$lte | 匹配小于或等于指定值的值 |
$ne | 匹配所有不等于指定值的值 |
特殊运算符
用法等同于比较运算符。
名称 | 描述 |
$search | 模糊查询 |
$nsearch | 不包含,会把 null 值查找出来 |
$regex | 正则匹配的值 |
$eq-current-user | 等于当前用户 |
$ne-current-user | 不等于当前用户 |
$empty | 数据为空 |
$nempty | 数据不为空 |
特殊符号
支持关联模型查询。
名称 | 描述 |
$related | 关联模型查询条件 |
$name | 数据源标识 |
$relatedType | 关联类型: 1:多对一 2:一对多 |
$relatedKey | 关联字段 |
$empty | 关联字段是否为空: 1:不为空 2:为空 |
$where | 查询条件 |
多对一:A 的字段关联 B 表。 多个 A 数据关联一个 B 数据。$related 最多 join 2层。子表 join 父表。
一对多:A 的字段关联 B 表。 一个 A 数据关联多个 B 数据。父表 join 子表。
用法示例
关联查询
module.exports = async function (params, context) {const result = await context.callModel({name: 'example', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaGetRecords', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法params: {where: [{"$and": [{"address": {"$eq": "上海"}},{"$related": {"$relatedType": 1,"$name": "data-123mnk23","$relatedKey": "age", // 此字段为A表中的关联字段"$empty": "1","$where": { // 此处查询条件按照B表的字段查询"$and": [{"name": {"$eq": "张三"}}]}}}]}],},});// 在这里返回这个方法的结果,需要与出参定义的结构映射return result;};
or 查询条件
{"$or": [{"address": {"$eq": "西安"}},{"address": {"$eq": "上海"}}]}
or 和 and 混合查询条件- and 的子条件
{"$or": [{"address": "武汉"},{"$and": [{"address": {"$eq": "上海"}},{"depName": {"$eq": "人事部"}}]}]}
or 和 and 混合查询条件- or 的子条件,or 和 and 混合查询条件- 并列
{"$and": [{"address": "上海"}, {"$or": [{"depName": {"$eq": "上海研发部"}}, {"depName": {"$eq": "人事部"}}, {"depName": {"$eq": "武汉研发部"}}]}]}