我不明白为什么这行不通,我通过: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不起作用。 谢谢
答案 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");
});
});