在解析中我有一个名为“TestScore”的类。每个对象都有一个名为“quizName”的键。
我需要获取一组唯一的“quizName”值。我编写了下面的代码,它查询“TestClass”并循环遍历结果寻找唯一的“quizName”值。
起初似乎可以完成这项工作。但后来我意识到返回对象的最大数量是 1000。很快就会存储超过 1000 个对象,这意味着这个方法不能保证我最终会得到所有值。
function loadTests(){
//create an array to hold each unique test name as we find them
var uniqueEntries = [];
//query parse to return TestScore objects
var TestScore = Parse.Object.extend("TestScore");
var query = new Parse.Query(TestScore);
query.limit(1000) //added this after realizing that the default query limit is only 100
query.find({
success: function(testScore) {
$(testScore).each(function(index, score) {
//here I loop though all of the returned objects looking at the "quizName" for each
if($.inArray(score.get("quizName"), uniqueEntries) === -1) {
//if the quiz name is not already in the "uniqueEntries" array, I add it to the array
uniqueEntries.push(score.get("quizName"));
}
});
//do stuff with quiznames here...., add them as options in select boxes mostly
}
});
}
我查看了{Parse.Query} notContainedIn(key, values)这看起来很有希望,但无法弄清楚我是否可以在找到它们时将值添加到数组中。看来我必须从一个数组开始(打败了整个点。)
文档的这一部分“{Parse.Query} 返回查询,因此您可以链接此调用。”让我觉得我也许能够将查询链接在一起以获得我需要的东西,但这似乎不是很有效。
当我的类有超过 1000 个对象时,如何检索键“quizName”的唯一值?
最佳答案
我确信您现在已经明白了这一点,但我知道的唯一方法是通过为每个查询使用 .skip(#) 值来依次使用一个查询。因此,获取 1000,然后使用 .skip(1000) 再次查询,连接第一个列表和第二个列表中的项目,然后使用 .skip(2000) 再次查询,依此类推...
请注意,我认为跳过值的限制为 10,000。不要相信我的话,只是向您指出一些我认为正确的事情,如果您认为它适用于您的情况,您应该确认。
关于javascript - 当类有超过 1000 个对象时,从 parse.com 检索键的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26621257/