Mongodb Nodejs Regex Поиск - PullRequest
       8

Mongodb Nodejs Regex Поиск

0 голосов
/ 21 января 2020

Эй, я делаю веб-сайт, который как форма частичного поиска. Ссылка от: https://www.youtube.com/watch?v=ZC2aRON3fWw&t=42s Но я не мог понять, почему это не работает. Я использую мопса вместо hbs.

И это мои коды:

    app.get('/sonuc', function(req, res, next){
  var q = req.query.q;
  Article.find({
    title : {
      $regex: new RegExp(q)
    }
  }, {
    _id:0,
    __v:0
    }, function(err, data){
      res.render('sonuc', {data:data})
    }).limit(10);
  });
});

Тогда это мой мопс макета:

.ui-widget
      form.form-inline.my-2.my-lg-0
        input.form-control.mr-sm-2(type='text', onkeyup='showResults(this.value)', placeholder='Search',action='/article/'+sorgu, aria-label='Search')
        button.btn.btn-secondary.my-2.my-sm-0(type='submit')
        #search-results(style='width:60px;top:-1px;position:relative')

В этом мопсе макет я проблема onkeyup не работает. Как я могу реализовать эту функцию в этой форме?

И это мое основное. js, который c берет запрос из базы данных и записывает его в html форме:

    var showResults = debounce(function(arg){
  var value = arg.trim();
  if(value == "" || value.length <= o){
    $("#search-results").fadOut();
    return;
  }else{
    $("#search-results").fadeIn();
  };
  var jqhr = $.get('/article/' + value, function(data){
  })
  .done(function(data){
    if(data.length == 0){
      $("search-resuts").append('<p classs="lead text-center mt-2">No Results</p>');
  }else{
    data.forEach(x => {
      $("search-resuts").append('<a href="#"><p class="m-2 lead"><img style="width:60px;" src="images/supreme1.jpg">' + x.title +'</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);
    };
  };

Я не могу понять эти проблемы и почему это не работает. В качестве резюме, я хочу создать поисковую систему, которая работает с регулярными выражениями и mongodb. Это будет частично, что показано в том видео на youtoube, которое приведено выше в моей статье, на которую я ссылался. Но реальная проблема в том, что я не мог понять блок кода функции showResults, и я не знаю, как перевести эти коды в мой проект. Так что я жду вашей помощи. Я не могу загрузить видео на этот веб-сайт, чтобы, если вы могли предоставить мне свой аккаунт в Facebook, Instagram или электронной почте, я мог отправить проблему, которая должна быть решена. Мне нужна ваша помощь. Я долгое время делал этот проект для своей школы, но не могу двигаться дальше. Пожалуйста, мне нужна твоя помощь. Я надеюсь, что смогу express себя хорошо, и ваша помощь решит это.

1 Ответ

0 голосов
/ 23 января 2020

Да, я понял. Я сделал много изменений вместо использования этого кода блоков. Я наблюдал: https://www.youtube.com/watch?v=9_lKMTXVk64 А также я задокументировал: Нечеткий поиск с Mongodb? Эти две документации мне очень помогают. Так что мой код почти на 90% такой же, как показано в этих документах. Это мое приложение. js:

app.get('/sonuc', function(req, res){
  if (req.query.search) {
    const regex = new RegExp(escapeRegex(req.query.search), 'gi');
    Article.find({ "title": regex }, function(err, articles) {
        if(err) {
            console.log(err);
        } else {
           res.render("index", { 
             articles: articles 
            });
        }
    });
  }
});

Это мой файл index.pug:

extends layout

block content
  body
    br 
    br
    br
    ul.list-group
      each article, i in articles
        li.list-group-item
          a(href="/article/" + article._id)= article.title

А это мой файл layout.pug (Но я рассмотрю текст форма)

  form.form-inline.my-2.my-lg-0(action="/sonuc" method="GET")
    input.form-control.mr-sm-2(type='text', name,="search", onkeyup='showResults(this.value)', placeholder='Search',action='/article/'+sorgu, aria-label='Search')
    button.btn.btn-secondary.my-2.my-sm-0(type='submit')

Пожалуйста, посмотрите: https://github.com/nax3t/fuzzy-search

Потому что в моем решении я не добавил сообщение, которое применяется, когда мы не можем найти слово. Или когда нет такого слова, которое ищет пользователь. Запрос noMatch. Но после того, как я применю его к своему проекту, я добавлю его сюда.

...