Мангуста найти, несколько полей с одним параметром поиска - PullRequest
0 голосов
/ 17 октября 2019

Я не могу понять, почему это не работает, я отправляю входные данные через: searchTerm и сначала пытаюсь найти термин в разделе имени БД, если не возвращены данные, я пытаюсь найти тот же термин в разделе фамилииБД. Я хочу сначала запросить у БД имя, если имя не найдено, я пытаюсь найти фамилию. Может кто-нибудь объяснить, почему код не работает, он работает как пару раз, тогда он ничего не возвращает.

   app.get('/api/find/:searchTerm', (req, res) => {
      var counter = 0
      Employee.find({ name: req.params.searchTerm }).then(findedData => {
        if(findedData) { res.json(findedData) }
        if(findedData === undefined || findedData == 0){ counter = 1 }
      })
      if(counter = 1) {
        Employee.find({ surName: req.params.searchTerm }).then(surnameData => {
        res.json(surnameData)
        })
      }
    });

он работает, когда я запрашиваю имя, но он не работает дляфамилия. Спасибо

1 Ответ

1 голос
/ 17 октября 2019

mongoose find возвращает пустой массив, поэтому нам нужно проверить findedData.length> 0, если что-то есть.

Итак, вы должны сделать так:

app.get("/api/find/:searchTerm", (req, res) => {

  Employee.find({ name: req.params.searchTerm }).then(findedData => {
    if (findedData.length > 0) {
      return res.json(findedData);
    }

    Employee.find({ surName: req.params.searchTerm }).then(surnameData => {
      return res.json(surnameData);
    });
  });
});

И с обработкой ошибок:

app.get("/api/find/:searchTerm", (req, res) => {
  Employee.find({ name: req.params.searchTerm })
    .then(findedData => {
      if (findedData.length > 0) {
        return res.json(findedData);
      }

      Employee.find({ surName: req.params.searchTerm })
        .then(surnameData => {
          return res.json(surnameData);
        })
        .catch(err => {
          console.log(err);
          return res
            .status(500)
            .send("Something went wrong with surname search");
        });
    })
    .catch(err => {
      console.log(err);
      return res.status(500).send("Something went wrong with name search");
    });
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...