我想根据 URL 的查询参数中可用的值构建查询。示例网址是:-
http://localhost:3000/api/user?page=&status=&search&role_id=
因此,当状态可用时,与其相关的 where 子句应该起作用,对于 search 和 role_id 也是如此。
我试图建立一个查询,其中分页部分和搜索参数工作得很好。但是当我传递/设置查询字符串的键时,查询没有结果。
到目前为止我构建的查询是这样的: -
let {page, search, status, role_id} = req.query;
role_id = role_id ? role_id : null;
status = status ? status : null;
const currentPage = parseInt(page) || 1;
const perPage = recordsPerPage;
const userData = await User.find({
$and: [
{
$or : [
{username:{'$regex' : search, '$options' : 'i'}},
{email:{'$regex' : search, '$options' : 'i'}}
]
},
{
$or : [
{status : status}
]
},
{
$or : [
{role_id : role_id}
]
},
{
email: { $ne: 'xxxxx@gmail.com' }
}
]
})
.sort({_id : -1})
.populate('role_id')
.skip((currentPage - 1) * perPage).limit(perPage);