簡體   English   中英

ZCCADCDEDB567ABAE643E15DCF0974E503Z 查找,一個搜索參數的多個字段

[英]Mongoose find, multiple fields with one search parametar

我不明白為什么這不起作用,我通過: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。 謝謝

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM