我正在使用一个使用带有(名称,性别)的表作为模式的应用程序。这用于检索给定名称的性别。因此,我在这里努力实现的是解析一个包含数千个名称的数组,并返回每个名称的性别。我可以只使用一个Parse调用吗?
我尝试使用Parse.Query.or查询每个名称但遗憾的是这只支持10个不同的查询。
有什么想法吗?
答案 0 :(得分:1)
Parse每个查询最多只能返回1000条记录。所以如果你有N个名字。它将需要最少的N / 1000查询。
解析限制参考http://profi.co/all-the-limits-of-parse/
要以最佳方式进行查询,您可以创建一批1000个名称并对Parse进行查询并将限制设置为1000.然后迭代所有记录并生成字典。但为了使它更快,你可以异步进行这些调用。
实施例
// function to fetch gender of list of names
function fetchGenderOfNames(arrayOfNames, successCallback, errorCallback){
var numberOfBatches = (arrayOfNames.length/1000 + (arrayOfNames.length % 1000)? 1 : 0),
callCount = 0,
genderOfNames = {},
errorFlag = false;
function querySuccessCallback(records){
if(!errorFlag){
records.forEach(function(record){
genderOfNames[record.get('name')] = record.get('gender');
});
callCount++;
if(callCount == numberOfBatches){
successCallback(genderOfNames);
}
}
}
function queryErrorCallback(error){
if(!errorFlag){
errorFlag = true;
errorCallback(error);
}
}
for(var arrayIndex = 0; arrayIndex < arrayOfNames.length; arrayIndex += 1000){
if(!errorFlag){
var genderQuery = new Parse.Query('Table_name');
// following match will be case sensitive
genderQuery.containedIn('name', arrayOfNames.slice(arrayIndex, arrayIndex + 1000);
genderQuery.limit(1000);
genderQuery.find({success: querySuccessCallback, error: queryErrorCallback});
}
}
}