返回获取的值

时间:2013-11-01 15:44:39

标签: backbone.js parse-platform

请查看下面的代码。这是一个使用一些下划线功能的Backbone / Parse代码。 我正在尝试迭代Parse类以检索该类中所有对象的“firstName”属性。 我有2个问题。 第一个,如注释所示,它正确地检索了名字,但它重复了它们。因此,如果有5个对象,它将检索5 firstName * 5.这里存在迭代问题。这与控制台日志一起显示。

第二个问题是,我尝试将firstName值推送到数组中,然后返回它,因此我可以稍后在代码中使用testt变量来使用这些值。但是,使用控制台日志检查testt内容会发送消息而不是firstname列表。 您是否看到如何修复此代码?

var DoopizCollection = Parse.Collection.extend({
        model: Subscribers

    }
);
var doopizlist = new DoopizCollection();
var testt;
testt = doopizlist.fetch({
    success: function(doopizlist) {
       var results = [];
        doopizlist.each(function(object) {
            results.push(doopizlist.pluck('firstName'));
            console.log(doopizlist.pluck('firstName')); // logs 2 duplicate arrays
        });

        return results;
    },
    error: function(doopizlist, error) {
        console.log("error"); // The collection could not be retrieved.
    }
});
console.log(testt);   // logs "a b.promise...." message instead of firstNames

1 个答案:

答案 0 :(得分:1)

重复问题是因为您使用doopizlist循环each 两次,再次使用pluck。 Pluck基本上是map方法的简写。

第二个问题是,您希望testt是结果值,而实际上它是jqXHR的实例,这就是所谓的 promise 。因此,您可以使用then方法记录结果的值。

var DoopizCollection = Parse.Collection.extend({
        model: Subscribers

    }
);
var doopizlist = new DoopizCollection();
var testt;
testt = doopizlist.fetch({
    success: function(results) {
        return results.pluck('firstName');
    },
    error: function(results, error) {
        console.log("error"); // The collection could not be retrieved.
    }
});

testt.then(function(results) {
    console.log(results);
});