猫鼬查找,具有一个搜索参数的多个字段

时间:2019-10-17 12:16:13

标签: node.js express

我不明白为什么这行不通,我通过: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)
        })
      }
    });

当我查询名字时它起作用,但是对于surName不起作用。 谢谢

1 个答案:

答案 0 :(得分:1)

猫鼬查找返回一个空数组,因此我们需要检查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");
    });
});