gpt4 book ai didi

javascript - 仅在满足特定条件时才使用 $in 运算符 - Mongoose

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

好吧,这可能只是我的愚蠢,没有正确查看 MongoDB 文档,但无论如何这是交易:

我有一个 RESTful API 路由,如下所示:

GET /api/users?ids[]=id1&ids[]=id2

它被解析成一个看起来像这样的对象:

var parsedObject = {ids: ['id1', 'id2']}

这会从查询字符串中返回具有指定 ID 的用户。现在,我希望这是可选的,这样这样的请求也可能有效:

GET /api/users

在mongoose中,为了找到具有指定ids的用户(如果有的话),我需要在查询时使用$in运算符,如下所示:

UserSchema.find()
.where('_id').in(req.query.ids)
.exec(function(err, users){
//some code
});

但是,当 req.query.ids 不存在时,它不会返回所有文档,而是什么都不返回。

我已经尝试过这样的东西:

var queryIds = req.query.ids || {};

仅当 req.query.ids 存在时,我如何才能使用 $in?肯定有比这样做更好的方法:

if (req.query.ids) {
UserSchema.find()
.where('_id').in(req.query.ids)
.exec(function(err, users){
//some code
});
} else {
UserSchema.find()
.exec(function(err, users){
//some code
});
}

我希望这是有道理的...感谢您的宝贵时间!

最佳答案

也许代替:

var queryIds = req.query.ids || {};

试试这个:

var queryIds = req.query.ids || [];

因为它应该是一个数组而不是一个对象。

但很可能您必须执行条件查询,可能是这样的:

UserSchema.find(req.query.ids ? {_id: {$in: req.query.ids}} : {})
.exec(function(err, users){
//some code
});
}

关于javascript - 仅在满足特定条件时才使用 $in 运算符 - Mongoose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41396359/

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