猫鼬动态查询结构“全部”或某些元素

时间:2019-01-04 08:56:24

标签: mongoose

我需要运行一个猫鼬查询,该查询基于用户的访问在db中搜索记录。访问字段将为['all']或要搜索的有效字符串数组。

查询的基本结构如下:

let { userid, access } = user;

let allRecords = await db.Record.find({
  'organisation': {$in: access.organisations},
  'country': {$in: access.countries}
})

但是,如果用户有访问所有组织,那么我不想过滤该字段。对所有组织的访问权限将以access.organisations === ['all']表示。国家字段也是如此。

这可以通过一些if语句来运行正确的查询来实现。那样就可以了,因为我没有很多访问字段,但是将来可能会扩展,所以如果语句变得混乱。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

像这样的东西不适合你吗?还是我误解了您的规格?

let { userid, access } = user;
let query = {};

if(access.organisations[0] !== 'all') {
 query.organisations = {$in: access.organisations};
}

if(access.country[0] !== 'all') {
 query.country = {$in: access.countries};
}

let allRecords = await db.Record.find(query)

更新:我添加了国家/地区要求。