Node.js 快速发送响应并在客户端捕获它
我试图让用户向服务器发送一些数据,数据保存到数据库中,之后我想向用户发送一条消息(例如,包含新添加对象的id),但我的代码尚未成功:Node.js 快速发送响应并在客户端捕获它,node.js,express,server,client,response,Node.js,Express,Server,Client,Response,我试图让用户向服务器发送一些数据,数据保存到数据库中,之后我想向用户发送一条消息(例如,包含新添加对象的id),但我的代码尚未成功: router.post('/sendSnippet', function (req, res) { req.on('data', function(data) { User.findOne({email: req.user.email}).then((userToEdit) =>{ if(userToE
router.post('/sendSnippet', function (req, res) {
req.on('data', function(data) {
User.findOne({email: req.user.email}).then((userToEdit) =>{
if(userToEdit){
var newSnippet = {
"types":[],
"code": data.toString()
}
userToEdit.snippets.push(newSnippet)
userToEdit.save().then(()=>{
res.redirect('/profile/');
----send response here----
})
}
})
})
});
这是发送新数据的客户端功能,我也猜有更好的方法,但到目前为止,这是有效的(不过,任何反馈都将不胜感激!)
提前谢谢你的帮助 您可以使用async/await这样做:
router.post('/sendSnippet', async (req, res) => {
const userToEdit = await User.findOne({email: req.user.email});
if (userToEdit) {
var newSnippet = {
"types":[],
"code": data.toString()
}
userToEdit.snippets.push(newSnippet);
const results = await userToEdit.save();
res.send({results: results._id});// it will send response
});
在客户端,您可以执行以下操作:
function sendSnippet(){
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState === 4) {
console.log(xmlHttp.response);
}
}
xmlHttp.open('POST', '/profile/sendSnippet', true);
xmlHttp.send(data to send);
}
查看更多详细信息。谢谢您的回复!我自己已经走了这么远,但我现在的问题是:如何“截取”数据,例如console.log它在客户端?是的,将事件附加到XHR对象。我已经更新了答案,你可以查一下。
function sendSnippet(){
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState === 4) {
console.log(xmlHttp.response);
}
}
xmlHttp.open('POST', '/profile/sendSnippet', true);
xmlHttp.send(data to send);
}