Отправить результаты Монго в ответ на Ajax - PullRequest
0 голосов
/ 27 октября 2019

Я использую AJAX для запроса MongoDB перед отправкой формы. Как только первое поле формы отправлено, выполняется вызов AJAX, чтобы проверить, существует ли уже документ с таким именем, и предоставляет пользователю возможность просмотреть существующий документ. К сожалению, я не могу найти способ отправить найденный успешный документ MongoDB с сервера на AJAX

//SERVER CALL
app.get('/cocktail-check/:drinkname', (req, res) => {
    let seeker = req.params.drinkname;
    let drinkChecker = Cocktail.findOne({name: seeker}, function (err, foundMatch) {
        if(err) {
            console.log(err)
        } else {
            res.send(JSON.stringify({foundMatch: foundMatch}))}
        })
    })

//AJAX and JS
let exper = document.getElementById('ajaxSearchTrig').addEventListener('click', () => {
let drinkName = document.getElementById('cocktail-name').value
let trialText = document.getElementById('trial');

var httpRequest = new XMLHttpRequest();

httpRequest.onreadystatechange = alertContents 
    httpRequest.open('GET', '/cocktail-check/'+ drinkName);
    httpRequest.send();
    function alertContents() {
        if (httpRequest.readyState === XMLHttpRequest.DONE) {
            if (httpRequest.status === 200) {
                console.log({foundMatch})
            } else {
                alert('There was a problem with the request.');
            }
        }
    };

})

1 Ответ

0 голосов
/ 27 октября 2019

findOne возвращает ноль, если запись не найдена, поэтому это может быть проблемой в вашем случае.

Сначала я бы протестировал API с почтальоном с этим кодом и был бы уверен, что API работает должным образом.

app.get('/cocktail-check/:drinkname', (req, res) => {

  let seeker = req.params.drinkname;

  Cocktail.findOne({ name: seeker }, function (err, foundMatch) {
    if (err) {
      console.log(err);
      return res.status(500).send();
    } else {

      console.log("foundMatch: ", foundMatch);
      if (foundMatch) {
        return res.json(foundMatch);
      } else {
        return res.status(404).json({ message: "not found" });
      }
    }
  })
})

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