ПОЛУЧИТЬ запрос с разными монго найти результаты на той же странице - PullRequest
0 голосов
/ 08 марта 2019

Мне бы хотелось, чтобы на моем сайте была строка поиска в верхней части, которая возвращает один документ (чернила) из базы данных Монго.На этой же странице я хотел бы иметь возможность доступа ко всем документам из одной и той же базы данных.

У меня возникают проблемы при попытке выяснить, как это сделать на одной странице, поскольку я могу отправить только один результатна URL.

Есть ли способ отправить все документы на страницу, а затем выполнить поиск с помощью AJAX на стороне клиента?Я новичок в кодировании, и мне интересно, не пойду ли я об этом неправильно.

Я ценю любую помощь.Вот часть моего кода, которая отправляет результаты, которые я хочу, но на разные страницы.

app.get("/", function(req, res){

// FIND ONE INK FROM DB
  var noMatch = null;
  if(req.query.search) {    
    Ink.find({ink: req.query.search}, function(err, foundInk){
      if(err){
        console.log(err);
    } else {
        if(foundInk.length < 1) {
          noMatch = "No match, please try again.";
      }
        res.render('new-index', {ink: foundInk, locationArray: locationArray, noMatch: noMatch })
      }
    });
  } else {

    // FIND ALL INKS FROM DB
    Ink.find({}, function(err, allInks){
      if(err){
          console.log(err);
      } else {
        res.render("index", {ink: allInks, locationArray: locationArray, noMatch: noMatch });
      }
    });
  }
});

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Вы можете использовать отдельные конечные точки для каждого запроса.Для запроса полного доступа вы можете отобразить страницу, вызывая res.render, а для запроса поиска вы можете вернуть json, вызывающий res.json.Примерно так:

app.get("/", function(req, res){
  // FIND ALL INKS FROM DB
  Ink.find({}, function(err, allInks){
    if(err){
      console.log(err);
    } else {
      res.render("index", {ink: allInks, locationArray: locationArray, noMatch: noMatch })
    }
  });
})

app.get("/search", function(req, res) {
  // FIND ONE INK FROM DB
  var noMatch = null;
  Ink.findOne({ink: req.query.search}, function(err, foundInk){
    if(err){
      console.log(err);
    } else 
      if(!foundInk) {
        noMatch = "No match, please try again.";
      }

      res.json({ink: foundInk, locationArray: locationArray, noMatch: noMatch })
    }
  });
});

Обратите внимание на вызов Ink.findOne в обработчике /search, который вернет только один документ.

Таким способом вы можете сделать и AJAX-запрос к /поиск и анализ json, возвращенного с сервера.

Я создал образец репозитория с точно такой же проблемой здесь

0 голосов
/ 08 марта 2019

В идеале вы должны создать такую ​​конечную точку.

( id parameter is optional here...thats why the '?' )   
www.example.com/api/inks/:id?


// return all the inks
www.example.com/api/inks

// return a specific ink with id=2
www.example.com/api/inks/2

Так что теперь вы можете рендерить все ссылки через /inks и искать определенные чернила, используя конечную точку /ink/:id?

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...