Как показать все данные и отфильтровать их в mongoose и mongodb? - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь получить все данные из базы данных Монго, но я хочу отфильтровать их специально.

То, что я пытаюсь сделать, это.Попросите кого-нибудь нажать на мое портфолио, чтобы показать ему подробную информацию о том, что я создал.Но на левой боковой панели я хочу показать другую работу, которую я сделал.Проверьте изображения, и вы должны лучше понять.

 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
      });
    }
  });
});

Изображение

FindById показывает только один конкретный проект.

Спасибо за вашу помощь

РЕДАКТИРОВАНИЕ -----------------------------------------------------

Поэтому я изменил код, чтобы получить все данные из БД и отфильтровать элемент, который мне нужен, по идентификатору.Я не могу разобрать данные до ejs.Когда я сохраняю данные console.log в nodejs, я получаю данные.Когда я консоль войти в EJS я получаю неопределенным.

Вот картинка, которую я получаю в nodejs.

Console.log

Я заметил, что, просматривая отфильтрованный элемент, я получаю все данныея нуждаюсь.Я не думаю, что правильно проходить по данным, когда я анализирую только один элемент для ejs.

Ответы [ 2 ]

0 голосов
/ 14 июля 2019

Вы должны добавить новое свойство в вашу схему, чтобы классифицировать вашу работу. например,

в вашей схеме:

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

когда вы публикуете свои данные, добавьте это свойство тоже

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

запрос, подобный этому:

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

Теперь вы получите данные, которые вам нужны.

0 голосов
/ 17 сентября 2018

Так что я понял это сам.

Я сделал так, как сказал пользователь givehug. Это сработало, но затем мне пришлось снова пройтись по фильтрованным элементам в ejs, несмотря на то, что есть только один элемент. EJS не знает, сколько элементов осталось в отфильтрованном массиве, поэтому я перебрал их. Получил один элемент, а затем я отрендерил его, и это сработало.

...