使用节点JS以for循环限制60个请求

时间:2016-08-23 15:14:37

标签: node.js for-loop zoho

我正在使用zoho crm api,两个拨打两个api电话,一个用于获取ID,另一个用于更新记录,问题是我每分钟有60个电话。

我有一个包含大量信息的数组,用于更新记录。

有什么方法可以每分钟拨打60次以避免被阻止?或任何其他工作?

var censados = [...] <-- big array
for (var i = 0; i < censados.length; i++) {

var elcorreo    = censados[i].email;
var elpais      = censados[i].country;

var criteria = "(Account Name:"+elcorreo+")"
var criteria = encodeURI(criteria);


var options = {
    hostname: 'crm.zoho.com',
    port: 443,
    path: '/crm/private/json/Potentials/searchRecords?authtoken=apikey&scope=crmapi&newFormat=1&selectColumns=Potentials(POTENTIALID)&criteria=' + criteria,
    method: 'GET'
};

 https.request(options, function(response) {
        var responseData = '';
        response.setEncoding('utf8');

        response.on('data', function(chunk) {
            responseData += chunk;
            jsonObject = JSON.parse(chunk);
        });

        response.once('error', function(err) {
            // Some error handling here, e.g.:
            res.serverError(err);
        });

        response.on('end', function() {
            try {
                //console.log(responseData.response.result.Potentials.row.FL.content)
                console.log(jsonObject.response.result)

                if (jsonObject.response.result.Potentials.row.FL.content) {

                var IdPotential = jsonObject.response.result.Potentials.row.FL.content;

                // START UPDATER

                  var xmlData = '\
                    <Potentials>\
                        <row no="1">\
                            <FL val="País de Recidencia">'+elpais+'</FL>\
                        </row>\
                    </Potentials>';

                    var xmlData = encodeURI(xmlData);

                    var options = {
                        hostname: 'crm.zoho.com',
                        port: 443,
                        path: '/crm/private/xml/Potentials/updateRecords?authtoken=apikey&scope=crmapi&id='+IdPotential+'&xmlData='+xmlData,
                        method: 'POST'
                    };


                    https.request(options, function(response) {

                    response.setEncoding('utf8');

                    response.on('data', function(chunk) {
                        responseData += chunk;
                        //jsonObject = JSON.parse(chunk);
                    });

                    response.once('error', function(err) {
                        // Some error handling here, e.g.:
                        res.serverError(err);
                    });

                    response.on('end', function() {
                        try {
                                console.log(responseData)
                        } catch (e) {
                            console.log(e)
                        }

                    });
                }).end();


                };
                //END UPDATE


            } catch (e) {
                console.log(e)
            }

        });
    }).end();

}

1 个答案:

答案 0 :(得分:-1)

  1. 似乎您的代码无效。您必须为您的帐户提供APIKEY Generate Auth Token

  2. API调用仅限于您的帐户。通常250-500个请求/用户取决于您的订阅API Limit,因此我建议您使用mass update call(版本= 4)。

  3. 您可以使用Zoho CRM Console

    来使用API