我想创建一个自动显示一些结果的搜索方法

时间:2019-06-10 10:24:15

标签: node.js mongoose

我正在创建一个在数据库中寻找用户的函数。 我已经完成了服务器端代码,但是我不知道如何在html代码中显示结果。我知道我必须编写一些JavaScript代码,但我不知道如何

我在Google上找到了一些东西,但这没用。

这是我的路线。

router.get('/search', isAuth, feedController.getSearch);

这是我的控制器。

exports.getSearch = (req,res,next) => {
    const search = req.query.searchField;

   User.find({
      firstname:{
          $regex: new RegExp(search)
      },
    }, {
        _id:0,
        __v:0
    }, function (err,data) {
        res.json(data);
    }
   ).limit(10);

}

这是我的HTML

 <li>
                            <div class="search-box">
                              <form action="/search" method="GET" class="form-inline my-0 my-lg-0">
                              <input type="text" aria-label="Search" class="form-control mr-sm-0" onkeyup="showResults(this.value)" placeholder="Mirror-Mirror Search">
                              <span class="hightlight"></span>
                              <span class="bar"></span>
                              </input>
                              <button type="submit" class="search-btn"><i class="fas fa-search"></i></button>
                              </form>
                            </div>
                            <div style="position: relative; width:100%; top:-1px;">
                            <div class="border" id="search-results"></div>
                            </div>
                          </li>

这就是我在Google上找到的

var showResults = debounce(function(arg) {
    var value = arg.trim();
    if(value == "" || value.length <=0)
    {
        $("#search-results").fadeOut();
        return;
    }
    else {
        $("#search-results").fadeIn();
    }
    var jgxh = $.get('/controllers/feed/getSearch?searchField=' + value, function(data) {
        $("#search-results").html("");
    })
    .done(function(data){
        if(data.length === 0) {
            $("#search-results").append('<p class="lead text-center mt-2">No results</p>');
        } else {
            data.forEach(x => {
               $("#search-results").append('<a href="#> <p class="m-2 lead>' +x.firstname+' '+x.lastname + '</p></a>')
            });
        }
    })
    .fail(function(err){
        console.log(err);
    })
},200)
function debounce(func, wait, immediate) {
    var timeout;
    return function() {
        var context = this;
        args = arguments;
        var later = function () {
            timeout = null;
            if(!immediate) func.apply(context,args);

        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout =  setTimeout(later, wait);
        if(callNow) func.apply(context,args);
    };
};

我希望自动显示结果,但是不起作用。我想在数据库中搜索“名字”或“姓氏”,希望能对我有所帮助,谢谢!

0 个答案:

没有答案