我正在尝试向express.js服务器执行简单的xhttp GET请求。不幸的是,我没有得到这个代码的响应数据。连接很好,因为我已成功使用“res.send
”从服务器发回一个正文。
我不确定我在服务器上使用“findOne
”是否不正确,或者我在客户端使用xhttp是否不正确。我怀疑是客户。
我很感激任何建议。
*客户代码*
function getfood() {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://localhost:3000/clientfood", true);
xhttp.send();
}
*服务器代码 - Express.js / Node *
app.get('/clientfood', cors(), (req, res) => {
//res.send('test'); //this works at least
db.collection('quotes').findOne({
"_id": ObjectId("12345")
},
{
name: 1,
quote: 1
})
})
答案 0 :(得分:1)
xhttp向express.js服务器发出GET请求 - 没有返回
您的服务器代码未返回响应。您需要执行res.send(...)
或res.json(...)
之类的操作才能将响应返回给调用者,并且您需要在数据库提供的回调中执行此操作以回传查询结果(在大多数数据库中) ,您可以使用普通回调或承诺。
您的客户端代码不会收听回复。如何执行此操作的示例here on MDN通常为:
function getfood() {
var xhttp = new XMLHttpRequest();
xhttp.addEventListener("load", function() {
if (xhttp.status === 200) {
// have data in xhttp.responseText, process it here
} else {
// got some other response here
}
});
xhttp.open("GET", "http://localhost:3000/clientfood", true);
xhttp.send();
}
答案 1 :(得分:0)
非常感谢 - 特别是@jfriend00。我有很多东西可以学习这些框架是如何工作的。在听取了关于SEND的建议之后,我在前端看到结果时遇到了一些麻烦。我收到了“承诺待决”的消息。我用这篇文章中建议的代码修复了它。 Express - Promise pending when loop queries 我还修改了我的findOne函数来获取我的id的整个对象。
最终代码:
commit 305b4c60f200ee8e6267ac75f3f5b5d09fda1079
Author: Daniel P. Berrange <berrange@redhat.com>
Date: Mon May 15 17:47:11 2017 +0100
qemu-img: introduce --target-image-opts for 'convert' command