在eve pre_GET挂钩中使用sqlalchemy添加OR过滤器

时间:2014-12-04 19:01:18

标签: eve

我正在使用Eve与sqlalchemy分支来开发REST API。

我想在将请求发送到数据库之前向GET请求添加一个过滤器,但是我找不到这样做了。

我想要做的基本上是这样的:

from sqlalchemy import or_

def pre_GET(resource, request, lookup):
    lookup.append(_or('field1'==1, 'field2'==2))

当然这不起作用,因为查找是字典。然而,搜索前夕源代码,我发现没有可能实现OR。查找变量在此文件中使用parse_dictionary()进行解析:https://github.com/nicolaiarocci/eve/blob/sqlalchemy/eve/io/sql/parser.py

使用MongoDB时的相应方式是:

lookup['$or'] = [{'field1': 1}, {'field2': 2}]

但是这仅适用于MongoDB ...

1 个答案:

答案 0 :(得分:1)

我知道这是一个老问题。 eve-sqlalchemy现在是一个具有独立生命周期/代码库的扩展。

当前的代码库似乎处理<dp:append-http-request-header name = "'Cookie'" value = "concat('SM_USER=',$UserID) "/> 条件here

现在可能有效吗?

更新(2016年2月6日)

我测试了这个。以下语法有效:

or

请注意lookup['or_'] = [{'field1': 1}, {'field2': 2}] 而不是您期望的or_