0

我通过 HTTP get 向我的 API 发送请求,这条路由接收请求,获取 url 参数并将它们存储为 variables 。

我有一个集合,我想根据这个参数的值进行查询,通常我会使用:

docs.find({"doc_type":doc_type,"year": year...})

但是有些参数是空的,我想知道是否有一个函数可以让我在它不为空的情况下使用该参数值进行过滤,否则如果它是空的,那么它不会使用该参数进行过滤。

示例:我有一个文档列表,每个文档都有一个 Module、Year 和 Category 字段,如果 url 中给出的模块为空,我应该只使用 Module 和 Year 查询,如果 year url 参数为空我应该只查询使用模块和类别字段,如果年份和模块 url 参数为空,我应该只根据类别字段等进行查询。

我正在寻找一些方法来做到这一点而不使用几个 if/else

4

1 回答 1

1

假设您已经以query某种方式构建了,您可以从中删除空字符串或 None 值:

query = {"doc_type": "type" ,"year": "", "url": "test_url"}
filtered_query = {k: v for k, v in query.items() if v is not None and v != ""}
docs.find(filtered_query) 
于 2018-08-16T22:12:06.250 回答