将Mongo结果作为响应发送到Ajax

将Mongo结果作为响应发送到Ajax,ajax,mongodb,express,Ajax,Mongodb,Express,我正在使用AJAX在提交表单之前查询MongoDB。提交第一个表单字段后,将进行AJAX调用,以检查是否已经存在同名文档,并为用户提供查看现有文档的机会。不幸的是,我一辈子都找不到将找到的成功MongoDB文档从服务器发送到AJAX的方法 //SERVER CALL app.get('/cocktail-check/:drinkname', (req, res) => { let seeker = req.params.drinkname; let drinkChecker

我正在使用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.');
            }
        }
    };

})

当找不到任何记录时,findOne返回null,因此这可能是您的问题所在

首先,我将用这段代码与postman一起测试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" });
      }
    }
  })
})