我在我的expressJS后端中制作了一个搜索引擎,遇到了困难。到目前为止,我大部分时间都具有搜索功能。但是,当获得完全匹配时,它将不起作用,从某些方面来说,它甚至根本不起作用。我很难找到原因。这是有问题的代码。
如果我完全键入Tom,我会得到Tom2222,但不会得到Tom。作为作者,根本找不到作为字符串的Dudeman。
kbRoutes.get('/', function(req, res) {
const query = req.query
KB.find()
.then(kbs => {
if (query.title === undefined) {
res.json(kbs)
} else {
var searchResults = []
kbs.filter(kb => {
if (kb) {
console.log(typeof kb.author)
console.log(typeof query.title)
if (kb.body) {
if (kb.body.toLowerCase()
.includes(query.title.toLowerCase())) {
searchResults.push(kb)
}
} else if (kb.title.toLowerCase()
.includes(query.title.toLowerCase()) ||
kb.title.toLowerCase() == query.title.toLowerCase()) {
searchResults.push(kb)
} else if (query.title.toLowerCase() == kb.author.toLowerCase()) {
// || kb.author.toLowerCase().includes(query.title.toLowerCase())) {
console.log(kb.author)
searchResults.push(kb)
} else if (kb.type) {
if (kb.type.toLowerCase().includes(query.title.toLowerCase())) {
searchResults.push(kb)
}
}
return searchResults
}
return searchResults
})
res.json(searchResults)
}
})
.catch(err => {
res.status(400).send(err);
});
});
答案 0 :(得分:0)
我认为我的第一个if语句存在问题。我解决了这是不令人讨厌的代码
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: color_grey_bg,
body: SafeArea(
child: LoginStatus.notSignIn ? const CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(
Color(colorPrimary))),
) : getMorePage()
),
);
}