Node.js:系统发送两次POST请求

伊戈尔·P。

我通过MEAN环境中的表单将JSON POST数据发送到服务器。在服务器端,我使用异步库在瀑布函数中处理数据,包括各种操作,例如:[...]-为新作者创建数据库条目-为新书创建数据库条目-将新书与作者关联(参考书号)[...]

这是我的路线所调用的方法,用于处理相关的POST请求:

exports.createAuthor = function(req, res) {

    console.log(req.url+' !!!POST REQUEST INCOMING!!! '+req.body);

    async.waterfall([

        function(callback){
            //create Author db entry
        },

        function(parameter, callback){
            //add author to additional directory (db action)
        },

        function(parameter, callback){
            //create book db entry
        },

        function(parameter, callback){
            //associate book to author (db action)
        }

    ], function (err, result) {
        console.log('DONE!!!');
        res.send('200');
    }); 
}

这是客户端AngularJS控制器代码:

searchApp = angular.module("searchApp",[]);
searchApp.controller('authorCreator', function ($scope,$http) {

    $scope.tags = [];

    $scope.sendAuthor = function(){  

    alert('I was called!');    
    $http({
        method: 'POST',
        url: '/newauthor/',
        data: { 'authorname' : $scope.authorName,
                'authordescription' : $scope.authorDescr, 
                'bookname' : $scope.bookName, 
                'tags' : $scope.tags }
        })
        .success(function(data){
            //no actions yet
        })
        .error(function(){
            //no actions yet
        });
    };
});

这是AngularJS形式:

<div ng-controller="authorCreator">
    <form>
        <p>Author name: <input ng-model="authorName"></p>
        <p>Author description: <input ng-model="authorDescr"></p>
        <p>Book name: <input ng-model="bookName"></p>
        <p>Tags:<input ng-model="tags"></p>
        <p><button ng-click="sendAuthor()">Send</button></p>
    </form>
</div>

我注意到,如果瀑布式进程“卡在”某处,这意味着客户端无论如何都无法获得其请求的答案,则POST请求似乎会自动第二次发送(只要浏览器给出超时提示,萤火虫)。根据firebug的说法,浏览器似乎没有发送第二个POST请求,因此必须从其他地方启动该调用。我通过检查数据库(当然,除了ObjectID以外的多个具有相同值的文档)并监视node.js控制台窗口(输出输入的POST数据)来发现。再次:整个瀑布过程完成后,客户端浏览器将不会在一段时间后中止发布请求,并执行res.send('200'),就不会发生错误(=没有多个数据库条目)。谁能告诉我,谁会发起第二个POST请求,我该如何停用它?干杯

伊戈尔

伊戈尔·P。

在解决该问题上花了一些时间后,我发现此错误似乎是由于缺少客户端的答案(可能是通过res.json,res.sendfile等)造成的。因此,客户端似乎会在一段时间后重新发送请求,从而第二次执行服务器端代码。在合理的时间内回复客户可以解决此问题。对困惑感到抱歉。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js:系统发送两次POST请求

来自分类Dev

Apache两次发送POST请求

来自分类Dev

Node.js两次调用require()

来自分类Dev

Node.js + request + for循环:运行两次

来自分类Dev

Node.js发送外部API POST请求

来自分类Dev

Node.js 它打印两次相同的结果,而不是一次

来自分类Dev

Node.js触发回调两次,为什么?

来自分类Dev

Node.js打印控制台输出两次

来自分类Dev

Node.js-WebStorm智能感知两次声明module.exports的影响

来自分类Dev

执行POST请求时无法在XMLHttpRequest的node.js版本上正确发送请求正文

来自分类Dev

node.js 通过请求模块发送

来自分类Dev

如何两次调用rospy.init_node()

来自分类Dev

如何使用when.js中的promise从node.js中对redis进行两次查询

来自分类Dev

解析来自Node js + handlebars的POST请求

来自分类Dev

输入数组的Node.JS POST请求

来自分类Dev

node.js中的POST请求

来自分类Dev

Node.js缺少POST请求的正文

来自分类Dev

解析来自Node js + handlebars的POST请求

来自分类Dev

jQuery + node.js表达POST请求

来自分类Dev

输入数组的Node.JS POST请求

来自分类Dev

Node.js Express-除了端口冲突之外,避免两次启动服务器的最佳方法

来自分类Dev

如何在不两次在node.js中设置res标头的情况下处理错误

来自分类Dev

我们可以在一个 node.js 中使用 app.use 两次吗

来自分类Dev

如何理解两次连续赋值 `cur = dummy = Node(7)` 或 `a = b = Node(7)`?

来自分类Dev

axios发送的请求由Laravel两次运行

来自分类Dev

两次阻止发送请求react-redux(hook)

来自分类Dev

AJAX代码两次发送GET请求

来自分类Dev

Python Google App Engine。两次发送GET请求

来自分类Dev

提交按钮混乱并两次发送请求(使用烧瓶)

Related 相关文章

热门标签

归档