Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 快速发送响应并在客户端捕获它_Node.js_Express_Server_Client_Response - Fatal编程技术网

Node.js 快速发送响应并在客户端捕获它

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

我试图让用户向服务器发送一些数据,数据保存到数据库中,之后我想向用户发送一条消息(例如,包含新添加对象的id),但我的代码尚未成功:

    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);
}