我正在为一个客户端构建一个MVEN项目,来自前端世界,我是MongoDB的新手,有一个基本问题。
在我的仪表板中,我有一个任务列表,其中有一个名为"的布尔字段;isFinished;并且我想过滤我的列表以显示所有任务、已完成的任务或带有选择输入的未完成任务。
这是我在猫鼬中的查询:
const tasks = await Task.find({ isFinished: req.query.isFinished }).sort({ createdAt: -1 });
当我的选择中有一个值true或false时,它工作得很好。但不知道如何显示所有任务。
我必须在show all任务的select中输入什么值,以及在mongoose中输入什么查询。
提前感谢!
您可以简单地执行
const tasks = await Task.find({}).sort({ createdAt: -1 });
或者,如果你真的想在isFinished
上进行筛选,你可以用$in
进行请求
const tasks = await Task.find({isFinished: {$in : [true, false]}}).sort({ createdAt: -1 });
您可以使用或处理此
const tasks = await Task.find({
$or: [
{ isFinished: true},
{ isFinished: false}
]
}).sort({ createdAt: -1 });
然而,这可以解决你的问题,但这种方式没有意义!或者这不是最佳实践。更好的解决方案是在客户端中查询所有任务并进行过滤
const tasks = await Task.find({}).sort({ createdAt: -1 });
let tasks_done = tasks.filter(task => task.isFinished)
let remaining_tasks = tasks.filter(task => !task.isFinished)