I must be missing something :
The REST API supports a resultOffset parameter to fetch records that are beyond maxRecordCount. https://developers.arcgis.com/rest/services-reference/enterprise/query-feature-service-layer-.htm
However, I cannot find this parameter in the 4.19 API https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-support-OffsetParameters.html nor in the 3.36 API https://developers.arcgis.com/javascript/3/jsapi/query.html.
What is the way to get records with the 4.x version above maxRecordCount from my service ?
Thanks a lot
Since you'll be using Query to retrieve the features, check out the properties available in this class; and related to your question the 'start' parameter: Query.start
Thanks John ! Also it's quite confusing the parameters names are different from those in the REST API. I was indeed missing something !
This is what I did with 10.5.1 services. There's probably a better way now but I haven't revisited it. The undefined queryObject variable is your original query object.
// Set record limit to match the service being queried const maxRecordCount = 1000; // Ensure only one value for outFields (changed at 10.6.1) // When returnCountOnly and returnDistinctValues are true, // more than one field specified in outFields is not supported. let queryForCount = queryObject.clone(); if (queryForCount.outFields && queryForCount.outFields.length > 1) { queryForCount.outFields = [queryForCount.outFields[0]]; } let queryTask = new QueryTask({url: "urlForMyLayer"}); queryTask.executeForCount(queryForCount) .then(function(queryRecordCount) { if (queryRecordCount) { // Build array of page steps and use to query the service // as many times as necessary to retrieve all records. const pageCount = Math.ceil(queryRecordCount / maxRecordCount); let resultPages = []; for (let i = 0; i < pageCount; i++) { resultPages.push(i * maxRecordCount); } return Promise.all(resultPages.map(function(resultPageStart) { queryObject.start = resultPageStart; queryObject.num = maxRecordCount; return queryTask.execute(queryObject); })); } else { // No records to query; send back an Array with one empty FeatureSet // to mimic the return from Promise.all() console.log('No records to query'); return Promise.resolve([new FeatureSet()]); } }) .then(function(featureSets) { // Combine all features into the first FeatureSet for return. let returnFeatureSet = featureSets.pop(); featureSets.forEach(function(featureSet) { Array.prototype.push.apply(returnFeatureSet.features, featureSet.features); }); resolve(returnFeatureSet); }) .catch(function(err) { reject(err); });
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.