我正在从前端获取一些值。查询它们并返回结果。目前我有
async fetchStats(getStatQuery: GetStatQueryDto): Promise<any> {
const stats = await this.statModel.find({
title: getStatQuery.title,
weight: getStatQuery.weight
});
return stats;
}
如果没有,getStatQuery.title
可以是undefined
,也可以发送getStateQuery.weight
。现在,如果未定义,我希望find
忽略该字段并将该字段过滤为通配符。除了人工检查,还有其他方法吗?
async fetchStats(getStatQuery: GetStatQueryDto): Promise<any> {
const tmp = {
title: getStatQuery.title,
weight: getStatQuery.weight
};
let query = {};
for(const [key, value] of Object.entries(tmp))
if (value !== undefined)
query[key] = value
const stats = await this.statModel.find(query);
return stats;
}
如果查询有更多字段,您唯一需要做的就是在tmp
变量中添加键值对。for循环将忽略未定义值的字段。