过滤对象数组 Returns 空数组

Filtering Array of Objects Returns Empty Array

我正在尝试过滤 projects 数组中不在 savedProjects 数组中的所有对象,但结果是一个空数组。我过滤的方式不对吗?

我的代码:

router.post('/get-related', async (req, res) => {
console.log(req.body);
try {
    const projects = await Projects.find({researchers: req.body.fullname});
    let savedProjects = await Projects.find({projectID: req.body.projectsIDs});
    projects.filter(p => savedProjects.includes(p) === false);
    res.json(projects);
} catch (err) { 
    console.log(err);
    res.json({ message: err }) };
});

const suggestedProjects = projects.filter(p=>savedProjects.some((p)=>p=false);

数组过滤函数 returns 一个新的数组而不修改原始数组所以为了让它工作我认为这样就足够了:

let filteredProjects = projects.filter(p => savedProjects.includes(p) === false); res.json(filteredProjects);

更多信息,MDN Array.filter()

使用 $nin 规范修复了它。我导入保存的项目,然后查询所有不包含在 savvedProjects 数组中的项目。

router.post('/get-related', async (req, res) => {
try {
    const savedProjects = await Projects.find({projectID: req.body.projectsIDs});
    let IDs = savedProjects.map(p => p.projectID);
    const projects = await Projects.find({ category: req.body.researcharea,  projectID: { $nin: IDs }});
    res.json(projects);
} catch (err) { res.json({ message: err }) };

});