在猫鼬中,如何根据当前结果过滤搜索结果?
Posted
技术标签:
【中文标题】在猫鼬中,如何根据当前结果过滤搜索结果?【英文标题】: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' 如果我应用三个参数,那就是结果。
您能分享一个文档示例吗?
【参考方案1】:
谷歌搜索 *** 后,我发现了一个类似的问题并解决了我的问题。这是代码,现在,我没有看到任何错误。但是请告诉我是否有任何可以改进的地方。
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)
)
【讨论】:
以上是关于在猫鼬中,如何根据当前结果过滤搜索结果?的主要内容,如果未能解决你的问题,请参考以下文章