【问题标题】:In mongoose, how to filter searching results based on the current result?在猫鼬中,如何根据当前结果过滤搜索结果?
【发布时间】:2021-03-08 18:48:00
【问题描述】:

我的 MERN 应用程序卡住了。我希望用户过滤产品的结果。用户应用的标准越多,结果应该越窄。例如,如果我应用过滤器男孩,则有 10 个结果。然后我正在尝试穿裤子,应该只有 5 个结果与我正在寻找的结果相匹配。但现在它不起作用。这是代码,

exports.getProductsSearchResult = (req, res, next) => {
    let query = {};
    const productCategory = req.query.category;
    const productSize = req.query.size;
    const productGender = req.query.gender
    if (productCategory !== undefined) query.category = productCategory;
    if (productGender !== undefined) query.gender = productGender;
    if (productSize !== undefined) query.size = productSize;
    console.log('query', query)
    Products.find(query).then(product => {
        // console.log(product)
        res.status(200).json(product)
    }).catch(err => {
        console.log(err)
    })
}

【问题讨论】:

  • console.log('query', query) 的输出如何?还要解释什么是“它不起作用”。哪里/什么问题?
  • query { category: 'pants', gender: 'boy', size: '1T'} 如果我应用三个参数,那就是结果。
  • 您能分享一个文档示例吗?

标签: database mongoose e-commerce mern


【解决方案1】:

谷歌搜索 StackOverflow 后,我发现了一个类似的问题并解决了我的问题。这是代码,现在,我没有看到任何错误。但是请告诉我是否有任何可以改进的地方。

exports.getProductsSearchResult = (req, res, next) => {
    let query = {};
    const productCategory = req.query.category;
    const productSize = req.query.size;
    const productGender = req.query.gender
    let payload = { "category": productCategory, "size": productSize, "gender": productGender }
    if (payload.category && payload.category.length > 0) query.category = { $in: payload.category }
    if (payload.size && payload.size.length > 0) query.size = { $in: payload.size };
    if (payload.gender && payload.gender.length > 0) query.gender = { $in: payload.gender };
    console.log('query', query)
    Products.find(query).then(product => {
        // console.log(product)
        res.status(201).json(product)
    }).catch(err => {
        console.log(err)
    })
}

【讨论】:

    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 2011-10-12
    • 2020-04-07
    • 2017-01-06
    • 2015-11-28
    • 1970-01-01
    • 2015-02-09
    相关资源
    最近更新 更多