Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee haalt u een verzameling tabelrecords op.
Syntaxis
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Parameterwaarden
| Naam | Typologie | Verplicht | Description |
|---|---|---|---|
entityLogicalName |
Snaar / Touwtje | Yes | De logische tabelnaam van de records die u wilt ophalen. Voorbeeld: account. |
options |
Snaar / Touwtje | Nee. | OData-systeemqueryopties of FetchXML-query om uw gegevens op te halen. Opties weergeven |
maxPageSize |
Number | Nee. | Geef een positief getal op dat het aantal tabelrecords aangeeft dat per pagina moet worden geretourneerd. Als u deze parameter niet opgeeft, wordt de waarde standaard ingesteld op de maximumlimiet van 5000 records voor standaardtabellen, 500 voor elastische tabellen. Als het aantal records dat wordt opgehaald meer is dan de opgegeven maxPageSize waarde of de maximumlimiet voor het tabeltype, bevat de nextLink kolom in het geretourneerde promise-object een koppeling om records op te halen. |
successCallback |
Functie | Nee. | Een functie die moet worden aangeroepen wanneer tabelrecords worden opgehaald. Zie Retourwaarde |
errorCallback |
Functie | Nee. | Een functie om aan te roepen wanneer de bewerking mislukt. Er wordt een object met de volgende eigenschappen doorgegeven: - errorCode:Getal. De foutcode als een positief decimaal getal. De foutcode die wordt beschreven zoals 0x80040333 wordt geretourneerd als 2147746611.- message:Snaar. Een foutmelding die het probleem beschrijft. |
Options
De volgende opties voor systeemquery's worden ondersteund: , , , en $orderby$expand. $filter$top$select
Gebruik de $expand systeemqueryoptie om te bepalen welke gegevens uit gerelateerde tabellen worden geretourneerd. Als u alleen de naam van de navigatie-eigenschap opneemt, ontvangt u alle eigenschappen voor gerelateerde records. U kunt de eigenschappen die worden geretourneerd voor gerelateerde records beperken met behulp van de $select optie systeemquery tussen haakjes na de naam van de navigatie-eigenschap. Gebruik dit voor navigatie-eigenschappen met één of meteen verzamelingswaarde . Houd er rekening mee dat voor offline alleen geneste $select opties in de $expand.
Als u een FetchXML-query wilt opgeven, gebruikt u de fetchXml kolom om de query op te geven.
Opmerking
U moet altijd de $selectsysteemqueryoptie gebruiken om de eigenschappen te beperken die worden geretourneerd voor een tabelrecord door een door komma's gescheiden lijst met eigenschapsnamen op te nemen. Dit is een belangrijke best practice op het gebied van prestaties. Als er geen eigenschappen worden opgegeven met behulp van $select, worden alle eigenschappen geretourneerd.
U geeft de queryopties op die beginnen met ?. U kunt ook meerdere systeemqueryopties opgeven door & de queryopties te scheiden.
Wanneer u een OData-queryreeks voor de options parameter opgeeft, moet de query worden gecodeerd voor speciale tekens.
Wanneer u een FetchXML-query voor de options parameter opgeeft, mag de query niet worden gecodeerd.
Zie Voorbeelden om te zien hoe u de options parameter kunt definiëren voor verschillende scenario's voor het ophalen van meerdere scenario's.
Retourwaarde
Retourneert bij succes een promise-object aan de successCallback hand van de volgende eigenschappen:
| Naam | Typologie | Description |
|---|---|---|
entities |
Matrix van JSON-objecten | Elk object vertegenwoordigt de opgehaalde tabelrecord met kolommen en de bijbehorende waarden als key: value paren. De id van de tabelrecord wordt standaard opgehaald |
nextLink |
Snaar / Touwtje | (optioneel) Als het aantal records dat wordt opgehaald meer is dan de waarde die is opgegeven in de maxPageSize parameter in de aanvraag, retourneert dit de URL om de volgende pagina met records te retourneren. |
fetchXmlPagingCookie |
(optioneel) Voor een op fetchXml gebaseerde retrieveMultipleRecords bewerking met paginering waarbij het totale aantal records groter is dan de pagineringswaarde, retourneert dit kenmerk de pagineringscookor die kan worden gebruikt voor een volgende fetchXml-bewerking om de volgende pagina met records op te halen. |
Niet-ondersteunde kenmerktypen voor OData-queryopties in Offline mobiel
De volgende kolomtypen worden niet ondersteund bij het uitvoeren van een Xrm.WebApi.retrieveMultipleRecords bewerking met OData-queryreeksopties (bijvoorbeeld $select en $filter) in de offlinemodus voor mobiele apparaten. Gebruik FetchXML als het kenmerktype waarmee u moet werken zich in deze lijst met niet-ondersteunde kenmerktypen bevindt.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Niet-ondersteunde functies in Mobile Offline
De volgende functies worden niet ondersteund in Mobile Offline:
- Groeperings- en aggregatiefuncties
Ondersteunde filterbewerkingen per kenmerktype in Mobile Offline met fetchXML
De volgende bewerkingen worden ondersteund voor alle kenmerktypen wanneer u met FetchXML werkt:
- Is gelijk aan (
eq) - Niet gelijk aan (
neq) - Null (
null) - Niet Null (
not-null)
De volgende tabel bevat meer bewerkingen die worden ondersteund voor elk kenmerktype:
| Type kenmerk | Ondersteunde bewerkingen |
|---|---|
| BigInt, Decimaal, Dubbel, Geheel getal | Groter dan (gt)Groter dan of gelijk aan ( gte)Kleiner dan ( lt)Kleiner dan of gelijk aan ( lte) |
| Booleaanse waarde, klant | In (in)Niet in ( not-in) |
| EntityName, Picklist, State, Status | Vind ik leuk (like)Niet leuk ( not-like)Begint met ( begins-with)Niet beginnen met ( not-begin-with)Eindigt met ( ends-with)Niet eindigen met ( not-end-with)In ( in)Niet in ( not-in) |
| Guid, Opzoeken | In (in)Niet in ( not-in)Is gelijk aan gebruikers-id ( eq-userid)Is niet gelijk aan gebruikers-id ( ne-userid) |
| Geld | Groter dan (gt)Groter dan of gelijk aan ( gte)Kleiner dan ( lt)Kleiner dan of gelijk aan ( lte)In ( in)Niet in ( not-in) |
| Eigenaar | In (in)Niet in ( not-in)Is gelijk aan gebruikers-id ( eq-userid)Is niet gelijk aan gebruikers-id ( ne-userid)Is gelijk aan gebruiker of team ( eq-useroruserteams) |
| Snaar / Touwtje | Vind ik leuk (like)Niet leuk ( not-like)Begint met ( begins-with)Niet beginnen met ( not-begin-with)Eindigt met ( ends-with)Niet eindigen met ( not-end-with) |
| DateTime | Aan of na (on-or-after)Op ( on)Op of voor ( on-or-before)Vandaag ( today)Morgen ( tomorrow)Gisteren ( yesterday)Volgende zeven dagen ( next-seven-days)Afgelopen zeven dagen ( last-seven-days)Volgende week ( next-week)Vorige week ( last-week)Deze week ( this-week)Volgende maand ( next-month)Vorige maand ( last-month)Deze maand ( this-month)Volgend jaar ( next-year)Vorig jaar ( last-year)Dit jaar ( this-year)Afgelopen X dagen ( last-x-days)Volgende x dagen ( next-x-days)Afgelopen X weken ( last-x-weeks)Volgende x weken ( next-x-weeks)Afgelopen X maanden ( last-x-months)Volgende x maanden ( next-x-months)Afgelopen X jaar ( last-x-years)Volgende x jaar ( next-x-years)Groter dan ( gt)Groter dan of gelijk aan ( gte)Kleiner dan ( lt)Kleiner dan of gelijk aan ( lte) |
Voorbeelden
De meeste scenario's/voorbeelden die worden vermeld in Querygegevens met behulp van de web-API , kunnen worden bereikt met behulp van de methode retrieveMultipleRecords . Hieronder vindt u enkele voorbeelden.
Eenvoudig ophalen van meerdere
In dit voorbeeld wordt een query uitgevoerd op de accountstabelset en worden de $select opties voor $top systeemquery's gebruikt om de naameigenschap voor de eerste drie accounts te retourneren:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$top=3").then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Eenvoudig meerdere ophalen met FetchXML
In dit voorbeeld wordt een query uitgevoerd op de account entiteit met behulp van fetchXML.
var fetchXml = "?fetchXml=<fetch><entity name='account'><attribute name='accountid'/><attribute name='name'/></entity></fetch>";
Xrm.WebApi.retrieveMultipleRecords("account", fetchXml).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Ophalen of filteren op opzoekeigenschappen
Voor de meeste navigatie-eigenschappen met één waarde vindt u een berekende, alleen-lezen eigenschap die gebruikmaakt van de volgende naamconventie: _<name>_value waarbij de <name> naam van de navigatie-eigenschap met één waarde is. Voor filterdoeleinden kan ook de specifieke waarde van de navigatie-eigenschap met één waarde worden gebruikt. Voor mobiele clients in de offlinemodus worden deze syntaxisopties echter niet ondersteund en moet de naam van de navigatie-eigenschap met één waarde worden gebruikt voor het ophalen en filteren. De vergelijking van navigatie-eigenschappen met null wordt ook niet ondersteund in de offlinemodus.
Meer informatie: Opzoekeigenschappen
Hier volgen codevoorbeelden voor beide scenario's:
Voor onlinescenario (verbonden met server)
In dit voorbeeld wordt een query uitgevoerd op de accountstabelset en worden de $select$filter opties voor systeemquery's gebruikt om de eigenschap name en primarycontactid te retourneren voor accounts met een bepaalde primaire contactpersoon:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name,_primarycontactid_value&$filter=primarycontactid/contactid eq a0dbf27c-8efb-e511-80d2-00155db07c77").then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Voor mobiel offlinescenario
In dit voorbeeld wordt een query uitgevoerd op de accountstabelset en worden de opties voor $filter systeemquery's $select gebruikt om de eigenschap name en primarycontactid te retourneren voor accounts die een bepaalde primaire contactpersoon hebben bij het werken in de offlinemodus:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name,primarycontactid&$filter=primarycontactid eq a0dbf27c-8efb-e511-80d2-00155db07c77").then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
FetchXML gebruiken om opzoekeigenschappen op te halen of te filteren (online- en offlinescenario)
U kunt de FetchXML parameter online of offline gebruiken om de name en primarycontactid eigenschap voor accountrecords op te halen die een primaire contactpersoon hebben die overeenkomt met een voorwaarde:
var fetchXml = `?fetchXml=
<fetch>
<entity name='account'>
<attribute name='name'/>
<attribute name='primarycontactid'/>
<link-entity name='contact' from='contactid' to='primarycontactid'>
<filter type='and'>
<condition attribute='lastname' operator='eq' value='Contoso'/>
</filter>
</link-entity>
</entity>
</fetch>`;
Xrm.WebApi.retrieveMultipleRecords("account", fetchXml).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Geef het aantal tabellen op dat moet worden geretourneerd op een pagina
In het volgende voorbeeld ziet u hoe de parameter wordt gebruikt maxPageSize om het aantal records (3) op te geven dat op een pagina moet worden weergegeven.
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name", 3).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
console.log("Next page link: " + result.nextLink);
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
In dit voorbeeld worden drie records en een koppeling naar de volgende pagina weergegeven. Hier volgt een voorbeeld van uitvoer van de Console in de ontwikkelhulpprogramma's van de browser:
{@odata.etag: "W/"1035541"", name: "A. Datum", accountid: "475b158c-541c-e511-80d3-3863bb347ba8"}
@odata.etag: "W/"1035541""accountid: "475b158c-541c-e511-80d3-3863bb347ba8"name: "A. Datum"__proto__: Object
VM5595:4
{@odata.etag: "W/"947306"", name: "Adventure Works", accountid: "a8a19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5595:4
{@odata.etag: "W/"1033754"", name: "Alpine Ski House", accountid: "aaa19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5595:6
Next page link: [Organization URI]/api/data/v9.0/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257bAAA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257b475B158C-541C-E511-80D3-3863BB347BA8%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E
Gebruik het queryonderdeel in de URL in de nextLink eigenschap als de waarde voor de parameter in de options volgende aanroep retrieveMultipleRecords om de volgende set records aan te vragen. Wijzig of voeg geen systeemqueryopties toe aan de waarde. Voor elke volgende aanvraag voor meer pagina's moet u dezelfde maxPageSize waarde gebruiken die wordt gebruikt in de oorspronkelijke aanvraag om meerdere aanvragen op te halen. Sla ook de geretourneerde resultaten of de waarde van de nextLink-eigenschap in de cache op, zodat eerder opgehaalde pagina's kunnen worden geretourneerd.
Als u bijvoorbeeld de volgende pagina met records wilt ophalen, geven we het querygedeelte van de nextLink URL door aan de options parameter:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257bAAA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257b475B158C-541C-E511-80D3-3863BB347BA8%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E", 3).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
console.log("Next page link: " + result.nextLink);
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Hiermee wordt de volgende pagina van de resultatenset geretourneerd:
{@odata.etag: "W/"1035542"", name: "Blue Yonder Airlines", accountid: "aca19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:4
{@odata.etag: "W/"1031348"", name: "City Power & Light", accountid: "aea19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:4
{@odata.etag: "W/"1035543"", name: "Coho Winery", accountid: "b0a19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:6
Next page link: [Organization URI]/api/data/v9.0/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%223%22%20pagingcookie=%22%253ccookie%2520page%253d%25222%2522%253e%253caccountid%2520last%253d%2522%257bB0A19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257bACA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E
Belangrijk
De waarde van de nextLink eigenschap is URI-gecodeerd. Als u de waarde codeert voordat u deze verzendt, veroorzaakt de XML-cookie-informatie in de URL een fout.
FetchXML-voorbeeld (onlinescenario)
In het volgende voorbeeld ziet u hoe de count parameter van FetchXML wordt gebruikt om het aantal records (3) op te geven dat op een pagina moet worden weergegeven.
Opmerking
De cookie FetchXML-paginering wordt alleen geretourneerd voor onlinebewerkingen retrieveMultipleRecords . (Xrm.WebApi.online). Het wordt niet offline ondersteund.
var fetchXml = "?fetchXml=<fetch count='3'><entity name='account'><attribute name='accountid'/><attribute name='name'/></entity></fetch>";
Xrm.WebApi.online.retrieveMultipleRecords("account", fetchXml).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
console.log("Paging cookie: " + result.fetchXmlPagingCookie);
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
In dit voorbeeld worden drie records weergegeven en wordt een FetchXML Paging-cookie geretourneerd om de resultaten van de volgende pagina op te halen als er meer records behoren tot de resultatenset. Hier volgt een voorbeeld van uitvoer van de Console in de ontwikkelhulpprogramma's van de browser:
{
"entities": [
{
"@odata.etag": "W/\"1035542\"",
"accountid": "aca19cdd-88df-e311-b8e5-6c3be5a8b200",
"name": "Blue Yonder Airlines"
},
{
"@odata.etag": "W/\"1031348\"",
"accountid": "aea19cdd-88df-e311-b8e5-6c3be5a8b200",
"name": "City Power & Light"
},
{
"@odata.etag": "W/\"1035543\"",
"accountid": "b0a19cdd-88df-e311-b8e5-6c3be5a8b200",
"name": "Coho Winery"
}
],
"fetchXmlPagingCookie": "<cookie pagenumber=\"2\" pagingcookie=\"%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b0748C6EC-55A8-EB11-B1B5-000D3AFEF6FA%257d%2522%2520first%253d%2522%257bFC47C6EC-55A8-EB11-B1B5-000D3AFEF6FA%257d%2522%2520%252f%253e%253c%252fcookie%253e\" istracking=\"False\" />"
}
We kunnen de fetchXmlPagingCookie zoals weergegeven in het onderstaande voorbeeld gebruiken om grote resultatensets met paging op te halen.
function CreateXml(fetchXml, pagingCookie, page, count) {
var domParser = new DOMParser();
var xmlSerializer = new XMLSerializer();
var fetchXmlDocument = domParser.parseFromString(fetchXml, "text/xml");
if (page) {
fetchXmlDocument
.getElementsByTagName("fetch")[0]
.setAttribute("page", page.toString());
}
if (count) {
fetchXmlDocument
.getElementsByTagName("fetch")[0]
.setAttribute("count", count.toString());
}
if (pagingCookie) {
var cookieDoc = domParser.parseFromString(pagingCookie, "text/xml");
var innerPagingCookie = domParser.parseFromString(
decodeURIComponent(
decodeURIComponent(
cookieDoc
.getElementsByTagName("cookie")[0]
.getAttribute("pagingcookie")
)
),
"text/xml"
);
fetchXmlDocument
.getElementsByTagName("fetch")[0]
.setAttribute(
"paging-cookie",
xmlSerializer.serializeToString(innerPagingCookie)
);
}
return xmlSerializer.serializeToString(fetchXmlDocument);
}
function retrieveAllRecords(entityName, fetchXml, page, count, pagingCookie) {
if (!page) {
page = 0;
}
return retrievePage(entityName, fetchXml, page + 1, count, pagingCookie).then(
function success(pageResults) {
if (pageResults.fetchXmlPagingCookie) {
return retrieveAllRecords(
entityName,
fetchXml,
page + 1,
count,
pageResults.fetchXmlPagingCookie
).then(
function success(results) {
if (results) {
return pageResults.entities.concat(results);
}
},
function error(e) {
throw e;
}
);
} else {
return pageResults.entities;
}
},
function error(e) {
throw e;
}
);
}
function retrievePage(entityName, fetchXml, pageNumber, count, pagingCookie) {
var fetchXml =
"?fetchXml=" + CreateXml(fetchXml, pagingCookie, pageNumber, count);
return Xrm.WebApi.online.retrieveMultipleRecords(entityName, fetchXml).then(
function success(result) {
return result;
},
function error(e) {
throw e;
}
);
}
var count = 3;
var fetchXml =
'<fetch><entity name="account"><attribute name="accountid"/><attribute name="name"/></entity></fetch>';
retrieveAllRecords("account", fetchXml, null, count, null).then(
function success(result) {
console.log(result);
// perform additional operations on retrieved records
},
function error(error) {
console.log(error.message);
// handle error conditions
}
);
Gerelateerde tabellen ophalen door navigatie-eigenschappen uit te vouwen
Gebruik de optie $expand systeemquery in de navigatie-eigenschappen om de gegevens te beheren die worden geretourneerd uit gerelateerde tabellen. In het volgende voorbeeld ziet u hoe u de contactpersoon voor alle accountrecords ophaalt. Voor de gerelateerde contactpersoonrecords worden alleen de contactid en fullname:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$top=3&$expand=primarycontactid($select=contactid,fullname)", 3).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Het bovenstaande stukje code retourneert een resultaat met een schema zoals:
{
"entities": [
{
"@odata.etag": "W/\"1459919\"",
"name": "Test Account",
"accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
"primarycontactid": {
"contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
"fullname": "Test Contact"
}
}
]
}
Opmerking
Net als bij het onlinescenario gebruikt u de optie $expand systeemquery om gegevens op te halen uit gerelateerde tabellen offline. Veel-op-veel-relaties worden echter niet ondersteund in offline.
Afgeschafte methode voor mobiel offlinescenario
Opmerking
De @odata.nextLink app is afgeschaft voor offlinescenario's voor mobiele apparaten. Hoewel het nog steeds wordt ondersteund voor bestaande aanpassingen, wordt het niet meer aanbevolen om deze te gebruiken.
Een offline -$expand-bewerking retourneert een @odata.nextLink aantekening met informatie over het ophalen van de gegevens van de gerelateerde record. We gebruiken de id, entityTypeen options parameter van die aantekening om een of meer extra Xrm.WebApi.offline.retrieveRecord aanvragen te maken. Het volgende stukje code biedt een volledig voorbeeld van hoe u dit doet:
Xrm.WebApi.offline.retrieveMultipleRecords("account", "?$select=name&$top=3&$expand=primarycontactid($select=contactid,fullname)").then(function(resultSet) {
/**
* resultSet has a structure like:
* {
* "entities": [
* {
* "accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
* "name": "Test Account",
* "primarycontactid@odata.nextLink": {
* "API": "{Xrm.Mobile.offline}.{retrieveRecord}",
* "id": "119edfac-19c6-ea11-a81a-000d3af5e732",
* "entityType": "account",
* "options": "?$select=accountid&$expand=primarycontactid($select=contactid,fullname)&$getOnlyRelatedEntity=true"
* },
* "primarycontactid": {}
* }
* ]
* }
*
* Notice the empty `primarycontactid` property but an additional `primarycontactid@odata.nextLink`
* annotation that lets us know how to get to the linked data that we need.
**/
var promises = resultSet.entities.map(function(outerItem) {
// We do a retrieveRecord() for every item in the result set of retrieveMultipleRecords() and then
// combine the results into the retrieveMultipleRecords() result set itself.
return Xrm.WebApi.offline.retrieveRecord(
outerItem["primarycontactid@odata.nextLink"].entityType,
outerItem["primarycontactid@odata.nextLink"].id,
outerItem["primarycontactid@odata.nextLink"].options
).then(function(innerResult) {
if (innerResult.value.length === 0) {
return outerItem;
}
outerItem.primarycontactid = innerResult.value[0];
return outerItem;
});
});
return Promise.all(promises);
}).then(function(allResults) {
for (var i = 0; i < allResults.length; i++) {
console.log(allResults[i]);
}
// perform additional operations on retrieved records
}, function(error) {
console.error(error);
// handle error conditions
});
Zie Querygegevens met behulp van de web-API voor meer voorbeelden van het ophalen van meerdere records met behulp van de web-API.
Verwante artikelen
Query's uitvoeren op gegevens met behulp van de web-API
Xrm.WebApi.retrieveRecord
Xrm.WebApi