首页 > 解决方案 > 使用 mongoose 在 mongoDB 中进行通配符搜索

问题描述

我正在从前端获取一些值。查询它们并返回结果。目前我有,

async fetchStats(getStatQuery: GetStatQueryDto): Promise<any> {
        const stats = await this.statModel.find({
            title: getStatQuery.title,
            weight: getStatQuery.weight
        });
        return stats;
}

如果什么都没有发送也getStatQuery.title可以。现在,如果未定义,我想忽略该字段并将该字段过滤为通配符。除了人工检查还有什么办法吗?undefinedgetStateQuery.weightfind

标签: mongodbmongoosenestjs

解决方案


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 循环将忽略具有未定义值的字段。


推荐阅读