node.js - Mongo/Express:如果没有通过查询参数,如何返回集合中的所有文档?
问题描述
如果没有传递查询参数,我正在尝试从我的 Mongo 集合中返回所有文档。目前我有 3 个可以由用户传递的可选查询参数。
localhost:3000/api/projects
//should return all projects. Currently this is returning []
localhost:3000/api/projects?id=1
//should return projects with id of "1". Working properly.
localhost:3000/api/projects?name=myproject
//should return projects with name of "myproject". Working properly.
localhost:3000/api/projects?created_by=John
//should return projects created by "John". Working properly.
在我的路线中,我试图确定我的请求有任何查询值。如果没有,那么我想返回集合中的所有文档。如上所述,这不会返回任何内容。
router.get('/', async (req, res) => {
if (req.query !== '') {
const project = await Projects.find({
$or: [
{ _id: req.query.id },
{ name: req.query.name },
{ created_by: req.query.created_by }]
});
res.json(project);
}
else {
const project = await Projects.find();
res.json(project);
}
});
解决方案
尝试如下:
router.get('/', async (req, res) => {
let searchQuery = {}
if(req.query.id){
searchQuery._id = req.query.id
}
if(req.query.name){
searchQuery.name = req.query.name
}
if(req.query.created_by){
searchQuery.created_by = req.query.created_by
}
const project = await Projects.find(searchQuery);
res.json(project);
});
推荐阅读
- java - Spring JPA - 一对多 - 重新育儿
- c# - 如何在实体框架配置中播种动态数据
- python - How to get all data out of many to many field?
- sql-server - 如何在 SQL Server 2008 R2 中创建新的数据库图表时修复“无效的类字符串(MS Visual Database Tools)”
- c++ - CMake 3.13.2 似乎与 G++ 8.2.0 有问题
- android - 为什么这个图像在奥利奥及以上会缩小?
- ruby - Ruby Make Dir.glob 适用于包括波浪号的路径~
- python - 如何使用 xpath 从 html 表中检索项目列表?
- javascript - 如何在 Observable 中设置 NgForm 值并测试它是否已设置?
- android - :app:mergeDebugResources 执行 taskAction 失败。我该如何解决这个问题?