gpt4 book ai didi

node.js - Mongoose:如果查询中的参数为空,则忽略该参数

转载 作者:可可西里 更新时间:2023-11-01 09:56:43 25 4
gpt4 key购买 nike

我有一个简单的 REST API,我想在特定端点上实现过滤。

假设我有这样一个端点:

localhost:5000/api/items?color="red"

它处理这样的请求:

const items = await Items.find({color: req.query.color})

这在存在 color 参数时有效。但是,如果省略 color 参数,则查询将搜索 colorundefined 的项目。这不是我需要的行为。

在我的例子中,我想添加多个过滤器参数,如果它们不存在,这些参数将被忽略。我是否必须为每个案例创建一个单独的查询,或者是否有一个选项告诉 Mongoose 不要搜索为 null 或未定义的字段(在本例中为 color)?

最佳答案

我刚刚遇到了同样的问题,如果你使用的是 ES6 支持的 Node 版本,你应该可以使用 spread。它会自动处理未定义的

var filters = {
colour: "red",
size: undefined
}


Items.find({...filters})
// only colour is defined, so it becomes
Items.find({colour:"red"})

注意如果你使用的是 Babel。您可能需要先定义一个对象。

var query = {...filters}
Items.find(query)

关于node.js - Mongoose:如果查询中的参数为空,则忽略该参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49436902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com