.includes不返回完全匹配。 JavaScript

时间:2019-08-15 02:52:07

标签: javascript node.js express

我在我的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);
    });
});

1 个答案:

答案 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()
      ),
    );
  }