for循环中的httpRequest为所有记录设置相同的值

时间:2015-11-07 14:45:10

标签: parse-platform

我想根据查询构建并返回CloudCode中的对象数组,并为每条记录完成httpRequest的结果。

以下(示例)的问题是它为所有记录的所有“元素”对象添加了相同的值。从测试中我知道promises.push(Parse.Cloud.httpRequest(..(例如“countryName”))之外的变量是唯一的。

我在这里缺少什么?

谢谢!

Parse.Cloud.define("search3", function(request, response) {

    var rs = [];
    var promises = [];

    // Query CountryTemp class
    var query = new Parse.Query('CountryTemp');
    query.limit(1000);
    query.exists("Country"); 
    query.include("Country");
    query.greaterThan('Month11', 25);

    query.find().then(function(results) {

        for (var i = 0; i < results.length; ++i) {

            var element = {};
            var result = results[i];
            var country = result.get("Country");

            var countryID = country.id;
            var countryName = country.get("Name");
            var temp = result.get("Month11");

            promises.push(Parse.Cloud.httpRequest({
                url: 'http://www.google.com'
            }).then(function(httpResponse){
                element.id = countryID;
                element.countryName = countryName;
                element.temp = result.get("Month11");
                element.httpresponse = httpResponse.text.substr(0, 50);
                rs.push(element);
            }));
        }

        return Parse.Promise.when(promises);

    }).then(function() {
        response.success(rs);
    }, function() {
        response.error('error');
    });

});

1 个答案:

答案 0 :(得分:0)

发现问题,使用下划线“_each”代替“for”修复它:

var _ = require('underscore'); 
..
_.each(results, function(result) {