在javascript中维护for循环中的http请求的顺序

时间:2015-07-10 03:33:01

标签: javascript node.js mongodb loops mongoose

我正在尝试使用node.js express和mongoose(MEAN堆栈)在MongoDB中保存一个对象数组。但是,当我在前端为阵列中的每个项目发出http post请求时,它们不会按顺序显示在后端。这是我在前端的内容:

$scope.postThenPost = function() {
    $http.post('/collection', $scope.doc).success(function(data){
        for (var i = 0; i<$scope.array.length; i++) {
            var req_obj = { thing: $scope.array[i] };
            $http.post('/collection2', req_obj);
        };
    };
};

并在后端,快递运行此发布到/ collection2:

exports.create = function(req, res) {
    var q = new q(req.body.thing);
    q.save(function(err) {
        if (err) {
            return res.status(400).send({
                message: errorHandler.getErrorMessage(err)
            });
        } else {
            res.jsonp(q);
        };
    });
};

我能做些什么来确保数组按顺序进入数据库?提前致谢

1 个答案:

答案 0 :(得分:1)

当您准备好要发送的所有数据时,发送$scope.array.length个HTTP请求是浪费的。

只需将整个数组发布到您的后端,然后您可以使用async之类的内容将它们保存在后端的循环中以保证订单。