如何显示所有数据并在mongoose和mongodb中进行过滤?

时间:2018-09-13 17:31:48

标签: node.js mongodb mongoose ejs

我正在尝试从mongo数据库中获取所有数据,但是我想专门过滤一个。

我想做的是。让某人单击我的投资组合,向他们显示有关我创建的内容的详细信息。但是在左侧边栏上,我想显示我已经完成的其他工作。查看图片,您应该会更好地理解。

 router.get('/portfolio/:id', function(req, res, next) {
  Work.findById(req.params.id, function(err, foundWork) {
    console.log(foundWork)

    if (err) {
      console.log(err);
    } else {
      res.render('portfolio', {
        title: 'Portfólio',
        work: foundWork
      });
    }
  });
});

Picture

FindById仅显示一个特定项目的结果。

感谢您的帮助

已编辑---------------------------------------------- -------

因此,我更改了代码,以从数据库和ID所需的过滤项中获取所有数据。我无法解析数据到ejs。当我在nodejs中console.log数据时,我得到数据。当我用控制台登录ejs时,我无法定义。

这是我在nodejs中得到的图片。

Console.log

我注意到当我遍历过滤的项目时,我得到了我需要的所有数据。我认为在将一个项目解析为ejs时遍历数据是不正确的。

2 个答案:

答案 0 :(得分:0)

所以我自己弄清楚了。

我按照用户givehug的说法做了。它起作用了,但是尽管只有一个项目,但我不得不再次在ejs中循环遍历过滤的项目。 EJS不知道过滤后的数组中还剩下多少个项目,所以我循环遍历了。拿出一个项目,然后我渲染它,它就起作用了。

答案 1 :(得分:0)

您必须在架构中添加新属性以对您的工作进行分类。例如,

在您的架构中:

{workType:{type:String}} //either required or no

发布数据时,也添加此属性

{workType:"other"} //i just made it up

像这样的查询

const other=await Work.find({workType:"other"})

现在您将获得所需的数据。