微服务开发
筛选条件,用于向数据库查询数据。
Steedos 使用数组的格式定义一个或多个筛选条件。例如以下过滤器用于查询本月创建的,责任人是本人的数据。
filters: [["priority", "=", "high"],["owner","=","{userId}"],["created", "=", this_month]]
filters: [["status", "=", ["closed","open"]]]
filters: [["age", "between", [20,30]]]
多个过滤器可以通过“与(and)”、“或(or)”操作进行组合,例如:
如果不指定“与(and)”、“或(or)”操作,系统默认按照“与(and)”操作执行过滤。所以下两种写法结果相同:
运算符为”=“时,条件自动按”or”裂变连接成多个筛选条件,类似实现了”in”操作功能,所以下两种写法结果相同:
运算符为”!=“时,条件自动按”and”裂变连接成多个筛选条件,所以下两种写法结果相同:
运算符为”between”时,条件自动转换成”>=“及”<=“运算符对应的筛选条件,以下各组效果相同:
:::info between只支持数值及日期时间类型,且过滤值必须是两个元素的数组格式
:::
其他情况一律自动按”or”裂变连接成多个筛选条件
筛选条件中允许指定当前状态相关属性值为value
实例:
支持两种function方式:
filters: ()-> return [[["object_name","=","project_issues"],'or',["object_name","=","tasks"]]]
\ 2. filters内的filter.value为function,如:
filters: [["object_name", "=", ()-> return "project_issues"]]
\ 或
filters: [{ "field": "object_name" "operation": "=" "value": ()-> return "project_issues"}]
日期和时间类型的字段,在数据库中保存的都是UTC时间。其中日期类型字段对应的是00:00:00。
查询日期时间类型字段时,必须先把时间转换为UTC时间格式再执行查询。
例如想要查询 创建日期为北京时间下午13:00以前的文档,需要先将北京时间转换为GMT时间再执行查询。
[["created","<=","2019-08-06T07:00:00Z"]]