在执行GET请求或建立双重关系之前,使用?where=修改GET请求

2024-06-15 23:17:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个在pythoneve上运行的API,并且我有从一个集合中的一个键到另一个集合中的一个对象的关系设置(所以键类型是relation/ObjectID)。我的问题是,在一段时间内,这种关系是建立在其他键(“name”而不是“ObjectID”)的基础上的,公司有一半的人在写自动化时都考虑到了这一点。所以他们用

"?where={"region":"name_here"}和另一半 "?where={"region":"objectID_here"}

我被问到是否有可能使他们都工作

据我所知-不可能在模式定义中使用它(在两个键上有一个关系),所以我尝试动态修改GET请求(执行类似于"if {"region"}is string而不是ObjectID的操作,然后动态修改为ObjectID”。我尝试了app.on\u pre\u GET event hook,但看起来它不能满足我的要求。我尝试在GET hook中使用“lookup”,但在发送where子句(或者where与任何内容都不匹配?)时它不起作用,所以我尝试修改url本身,但似乎无法更新args列表或url(只是为了获取而不是保存回来?)

'region':{
    'type':'objectid',
    'data_relation':{
        'resource':'regions',
        'field':'_id',
        'embeddable': True
        },
    }

我很想有可能使用?同一键有两个可能值的where子句:

GET apiurl:/vms?where={"region":"some_region_name"} 
GET apiurl:/vms?where={"region":"5ceeef108941633fc78cdef1"}

(两个请求应返回相同的结果)


Tags: nameurlgethere关系动态hookwhere