将数据从node.js发送回客户端javascript
我想做的是,我已经设置了一个从客户端JS到server Node.JS的fetch连接,当一个人点击HTML中的一个按钮时,该按钮会触发服务器端在其find's it中查找MongoDB数据库中的元素,但我的问题是如何将找到的元素发送回客户端JS将数据从node.js发送回客户端javascript,javascript,node.js,express,Javascript,Node.js,Express,我想做的是,我已经设置了一个从客户端JS到server Node.JS的fetch连接,当一个人点击HTML中的一个按钮时,该按钮会触发服务器端在其find's it中查找MongoDB数据库中的元素,但我的问题是如何将找到的元素发送回客户端JS Javascript Code: var button = document.getElementById("1"); button.addEventListener("click", idss); function idss() {
Javascript Code:
var button = document.getElementById("1");
button.addEventListener("click", idss);
function idss() {
var id = this.id;
var data = {
name : id
}
fetch("/clicked", {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(function(response) {
if(response.ok) {
console.log('awesome');
return;
}
throw new Error('Request failed.');
})
.catch(function(error) {
console.log(error);
});
}
NODE JS:
app.post("/clicked", (req, res) => {
var pro = (req.body.name);
Number(pro);
Product.findOne({"id": pro}, function(err, foundLList) {
if(err) {
console.log(err);
} else {
console.log(foundLList); //THE ELEMENT IS FOUND
}
}
);
});
我试图做的是将找到的元素发送到Javascript,以便添加到另一个变量。您必须使用res对象将数据发送回客户端。您的节点代码将是:
app.post("/clicked", (req, res) => {
var pro = (req.body.name);
Number(pro);
Product.findOne({
"id": pro
}, function(err, foundLList) {
if (err) {
console.log(err);
return res.status(500).json({
ok: false,
error: err
});
} else {
console.log(foundLList); //THE ELEMENT IS FOUND
return res.status(200).json({
ok: true,
data: foundLList
});
}
});
});
在客户端,您可以像这样读取数据:
fetch("/clicked", {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(function(response) {
if (response.ok) {
console.log('got data: ', response.data);
}
throw new Error('Request failed.');
})
.catch(function(error) {
console.log(error);
});
}
在Node.js中使用res.send(数据);实际归还某物。据我所知,大部分MongoDB函数都是异步的,所以最好使用async/Await。如果您使用的是Express.js,这将在文档开头的基本示例中介绍。我尝试将我得到的未定义放在undefined for response.data中。尝试将响应对象转换为JSON。添加
.then(response=>response.json())
在then we haveThaks Mohammed之前,我用这段代码解决它。然后(response=>response.json())。然后(res=>{if(res.ok){console.log(res);}很高兴能帮上忙:)