mongodb - 使用 mongoose 在 mongoDB 中进行通配符搜索
问题描述
我正在从前端获取一些值。查询它们并返回结果。目前我有,
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 循环将忽略具有未定义值的字段。
推荐阅读
- javascript - 带有授权标头的 HTTP 请求
- r - ggplot 缺少图例
- excel - 计算非空白单元格以进行平均计算(不在范围内)
- javascript - 如何摆脱nodejs中try-catch块中的语法错误
- azure - EventHubConsumerClient Apache Qpid 内存泄漏?
- r - R tidyverse 警告:`[`()` 的`i` 参数不能是 tibble 3.0.0 的矩阵
- keras - 设置多站点 LSTM
- excel - 如果满足条件,计算单元格的平均值
- python - 如何为动态 Flask 端点创建 Swagger 文档?
- spring-boot - Spring Boot + Gradle 测试未运行