将Mongo结果作为响应发送到Ajax
我正在使用AJAX在提交表单之前查询MongoDB。提交第一个表单字段后,将进行AJAX调用,以检查是否已经存在同名文档,并为用户提供查看现有文档的机会。不幸的是,我一辈子都找不到将找到的成功MongoDB文档从服务器发送到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
//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" });
}
}
})
})