Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengambil kumpulan rekaman tabel.
Syntax
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Parameter-parameternya
| Nama | Tipe | Diperlukan | Description |
|---|---|---|---|
entityLogicalName |
String | Yes | Nama logis tabel rekaman yang ingin Anda ambil. Misalnya: account. |
options |
String | Tidak. | Opsi kueri sistem OData atau kueri FetchXML untuk mengambil data Anda. Lihat Opsi |
maxPageSize |
Number | Tidak. | Tentukan angka positif yang menunjukkan jumlah rekaman tabel yang akan dikembalikan per halaman. Jika Anda tidak menentukan parameter ini, nilai defaultnya adalah batas maksimum 5.000 rekaman untuk tabel standar, 500 untuk tabel elastis. Jika jumlah rekaman yang diambil lebih dari nilai yang ditentukan maxPageSize atau batas maksimum untuk jenis tabel, nextLink kolom dalam objek janji yang dikembalikan akan berisi tautan untuk mengambil rekaman. |
successCallback |
Function | Tidak. | Fungsi untuk dipanggil saat rekaman tabel diambil. Lihat Mengembalikan Nilai |
errorCallback |
Function | Tidak. | Fungsi untuk memanggil saat operasi gagal. Objek dengan properti berikut diteruskan: - errorCode:Angka. Kode kesalahan sebagai angka desimal positif. Misalnya, kode kesalahan yang didokumenkan sebagai 0x80040333 akan dikembalikan sebagai 2147746611.- message:Tali. Pesan kesalahan yang menjelaskan masalah. |
Opsi
Opsi kueri sistem berikut didukung: $select, , $top, $filter, $expanddan $orderby.
$expand Gunakan opsi kueri sistem untuk mengontrol data apa dari tabel terkait yang dikembalikan. Jika Anda hanya menyertakan nama properti navigasi, Anda akan menerima semua properti untuk rekaman terkait. Anda bisa membatasi properti yang dikembalikan untuk rekaman terkait menggunakan $select opsi kueri sistem dalam tanda kurung setelah nama properti navigasi. Gunakan ini untuk properti navigasi bernilai tunggal dan bernilai koleksi . Perhatikan bahwa untuk offline kami hanya mendukung opsi berlapis $select di dalam $expand.
Untuk menentukan kueri FetchXML, gunakan fetchXml kolom untuk menentukan kueri.
Nota
Anda harus selalu menggunakan $selectopsi kueri sistem untuk membatasi properti yang dikembalikan untuk rekaman tabel dengan menyertakan daftar nama properti yang dipisahkan koma. Ini adalah praktik terbaik kinerja yang penting. Jika properti tidak ditentukan menggunakan $select, semua properti akan dikembalikan.
Anda menentukan opsi kueri yang dimulai dengan ?. Anda juga bisa menentukan beberapa opsi kueri sistem dengan menggunakan & untuk memisahkan opsi kueri.
Saat Anda menentukan string kueri OData untuk options parameter , kueri harus dikodekan untuk karakter khusus.
Saat Anda menentukan kueri FetchXML untuk options parameter , kueri tidak boleh dikodekan.
Lihat Contoh untuk melihat bagaimana Anda dapat menentukan options parameter untuk berbagai mengambil beberapa skenario.
Mengembalikan Nilai
Setelah berhasil, mengembalikan objek janji ke successCallback dengan properti berikut:
| Nama | Tipe | Description |
|---|---|---|
entities |
Array dari objek JSON | Setiap objek mewakili rekaman tabel yang diambil yang berisi kolom dan nilainya sebagai key: value pasangan. ID rekaman tabel diambil secara default |
nextLink |
String | (opsional) Jika jumlah rekaman yang diambil lebih dari nilai yang ditentukan dalam maxPageSize parameter dalam permintaan, ini mengembalikan URL untuk mengembalikan halaman rekaman berikutnya. |
fetchXmlPagingCookie |
(opsional) Untuk operasi berbasis retrieveMultipleRecords fetchXml dengan halaman di mana jumlah catatan total lebih besar dari nilai halaman, atribut ini mengembalikan cookie halaman yang dapat digunakan untuk operasi fetchXml berikutnya untuk mengambil halaman rekaman berikutnya. |
Tipe Atribut yang Tidak Didukung untuk opsi kueri OData di Mobile Offline
Jenis Kolom berikut ini tidak didukung saat melakukan Xrm.WebApi.retrieveMultipleRecords operasi dengan opsi string kueri OData (misalnya, $select dan $filter) dalam mode offline seluler. Anda harus menggunakan FetchXML jika jenis atribut yang perlu Anda kerjakan ada dalam daftar jenis atribut yang tidak didukung ini.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Fitur yang tidak didukung di Mobile Offline
Fitur berikut ini tidak didukung di Mobile Offline:
- Fitur pengelompokan dan Agregasi
Operasi Filter yang Didukung Per Jenis Atribut di Seluler Offline menggunakan FetchXML
Operasi berikut didukung untuk semua jenis atribut saat bekerja dengan FetchXML:
- Sama dengan (
eq) - Tidak Sama Dengan (
neq) - Null (
null) - Bukan Null (
not-null)
Tabel berikut ini mencantumkan lebih banyak operasi yang didukung untuk setiap jenis atribut:
| Jenis Atribut | Operasi yang Didukung |
|---|---|
| BigInt, Desimal, Ganda, Bilangan Bulat | Lebih Besar Dari (gt)Lebih Besar Dari atau Sama Dengan ( gte)Kurang Dari ( lt)Kurang Dari atau Sama Dengan ( lte) |
| Boolean, Pelanggan | Dalam (in)Tidak Dalam ( not-in) |
| EntityName, Picklist, State, Status | Seperti (like)Tidak Suka ( not-like)Dimulai Dengan ( begins-with)Tidak Dimulai Dengan ( not-begin-with)Diakhir Dengan ( ends-with)Tidak Diakhir Dengan ( not-end-with)Dalam ( in)Tidak Dalam ( not-in) |
| Guid, Pencarian | Dalam (in)Tidak Dalam ( not-in)Sama dengan ID Pengguna ( eq-userid)Tidak Sama dengan ID Pengguna ( ne-userid) |
| Uang | Lebih Besar Dari (gt)Lebih Besar Dari atau Sama Dengan ( gte)Kurang Dari ( lt)Kurang Dari atau Sama Dengan ( lte)Dalam ( in)Tidak Dalam ( not-in) |
| Pemilik | Dalam (in)Tidak Dalam ( not-in)Sama dengan ID Pengguna ( eq-userid)Tidak Sama dengan ID Pengguna ( ne-userid)Sama dengan Pengguna Atau Tim ( eq-useroruserteams) |
| String | Seperti (like)Tidak Suka ( not-like)Dimulai Dengan ( begins-with)Tidak Dimulai Dengan ( not-begin-with)Diakhir Dengan ( ends-with)Tidak Diakhir Dengan ( not-end-with) |
| DateTime | Pada atau Setelah (on-or-after)Aktif ( on)Aktif atau Sebelum ( on-or-before)Hari ini ( today)Besok ( tomorrow)Kemarin ( yesterday)Tujuh Hari Ke Depan ( next-seven-days)Tujuh Hari Terakhir ( last-seven-days)Minggu Depan ( next-week)Minggu Lalu ( last-week)Minggu Ini ( this-week)Bulan Depan ( next-month)Bulan Lalu ( last-month)Bulan Ini ( this-month)Tahun Depan ( next-year)Tahun Lalu ( last-year)Tahun Ini ( this-year)X Hari Terakhir ( last-x-days)X Hari Berikutnya ( next-x-days)X Minggu Terakhir ( last-x-weeks)Minggu X Berikutnya ( next-x-weeks)X Bulan Terakhir ( last-x-months)X Bulan Berikutnya ( next-x-months)X Tahun Terakhir ( last-x-years)Tahun X Berikutnya ( next-x-years)Lebih Besar Dari ( gt)Lebih besar dari atau sama dengan ( gte)Kurang Dari ( lt)Kurang dari atau Sama Dengan ( lte) |
Examples
Sebagian besar skenario/contoh yang disebutkan dalam Data Kueri menggunakan API Web dapat dicapai menggunakan metode retrieveMultipleRecords . Beberapa contoh tercantum di bawah ini.
Pengambilan dasar beberapa
Contoh ini mengkueri kumpulan tabel akun dan menggunakan $select opsi kueri sistem dan $top untuk mengembalikan properti nama untuk tiga akun pertama:
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
}
);
Pengambilan dasar beberapa dengan FetchXML
Contoh ini mengkueri account entitas menggunakan 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
}
);
Mengambil atau memfilter menurut properti pencarian
Untuk sebagian besar properti navigasi bernilai tunggal, Anda akan menemukan properti komputasi baca-saja yang menggunakan konvensi penamaan berikut: _<name>_value di mana <name> adalah nama properti navigasi bernilai tunggal. Untuk tujuan pemfilteran, nilai spesifik properti navigasi bernilai tunggal juga dapat digunakan. Namun, untuk klien seluler dalam mode offline, opsi sintaks ini tidak didukung, dan nama properti navigasi nilai tunggal harus digunakan untuk mengambil dan memfilter. Selain itu, perbandingan properti navigasi ke null tidak didukung dalam mode offline.
Informasi selengkapnya: Properti pencarian
Berikut adalah contoh kode untuk kedua skenario:
Untuk skenario online (tersambung ke server)
Contoh ini mengkueri kumpulan tabel akun dan menggunakan $select opsi kueri sistem dan $filter untuk mengembalikan nama dan properti primarycontactid untuk akun yang memiliki kontak utama tertentu:
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
}
);
Untuk skenario offline seluler
Contoh ini mengkueri kumpulan tabel akun dan menggunakan $select opsi kueri sistem dan $filter untuk mengembalikan nama dan properti primarycontactid untuk akun yang memiliki kontak utama tertentu saat bekerja dalam mode offline:
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
}
);
Menggunakan FetchXML untuk mengambil atau memfilter menurut properti pencarian (skenario online dan offline)
Anda dapat menggunakan FetchXML parameter saat online atau offline untuk mengambil name properti dan primarycontactid untuk rekaman akun yang memiliki kontak utama yang cocok dengan kondisi:
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
}
);
Tentukan jumlah tabel yang akan dikembalikan dalam halaman
Contoh berikut menunjukkan penggunaan maxPageSize parameter untuk menentukan jumlah rekaman (3) yang akan ditampilkan dalam halaman.
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
}
);
Contoh ini akan menampilkan tiga rekaman dan tautan ke halaman berikutnya. Berikut adalah contoh output dari Konsol di alat pengembang 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
Gunakan bagian kueri dalam URL di nextLink properti sebagai nilai untuk options parameter dalam panggilan retrieveMultipleRecords berikutnya untuk meminta kumpulan rekaman berikutnya. Jangan ubah atau tambahkan opsi kueri sistem lagi ke nilai . Untuk setiap permintaan berikutnya untuk lebih banyak halaman, Anda harus menggunakan nilai yang sama yang maxPageSize digunakan dalam beberapa permintaan pengambilan asli. Selain itu, cache hasil yang dikembalikan atau nilai properti nextLink sehingga halaman yang diambil sebelumnya dapat dikembalikan.
Misalnya, untuk mendapatkan halaman rekaman berikutnya, kita akan meneruskan bagian kueri URL nextLink ke 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
}
);
Ini akan mengembalikan halaman berikutnya dari resultset:
{@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
Penting
Nilai properti dikodekan nextLink URI. Jika Anda mengodekan nilai URI sebelum mengirimkannya, informasi cookie XML di URL akan menyebabkan kesalahan.
Contoh FetchXML (skenario online)
Contoh berikut menunjukkan penggunaan count parameter FetchXML untuk menentukan jumlah rekaman (3) yang akan ditampilkan dalam halaman.
Nota
Cookie halaman FetchXML hanya dikembalikan untuk operasi online retrieveMultipleRecords . (Xrm.WebApi.online). Ini tidak didukung secara offline.
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
}
);
Contoh ini akan menampilkan tiga rekaman dan mengembalikan Cookie Halaman FetchXML ke mengambil hasil halaman berikutnya jika ada lebih banyak rekaman milik kumpulan hasil. Berikut adalah contoh output dari Konsol di alat pengembang 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\" />"
}
Kita dapat menggunakan seperti yang fetchXmlPagingCookie ditunjukkan pada contoh di bawah ini untuk mengambil tataan hasil besar dengan penomor.
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
}
);
Mengambil tabel terkait dengan memperluas properti navigasi
Gunakan opsi kueri sistem $expand di properti navigasi untuk mengontrol data yang dikembalikan dari tabel terkait. Contoh berikut menunjukkan cara mengambil kontak untuk semua catatan akun. Untuk rekaman kontak terkait, kami hanya mengambil contactid dan 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
}
);
Bagian kode di atas mengembalikan hasil dengan skema seperti:
{
"entities": [
{
"@odata.etag": "W/\"1459919\"",
"name": "Test Account",
"accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
"primarycontactid": {
"contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
"fullname": "Test Contact"
}
}
]
}
Nota
Mirip dengan skenario online, gunakan opsi kueri sistem $expand untuk mengambil data dari tabel terkait secara offline. Namun, hubungan banyak ke banyak tidak didukung secara offline.
Metode yang tidak digunakan lagi untuk skenario offline seluler
Nota
@odata.nextLink tidak digunakan lagi untuk skenario offline seluler. Meskipun masih didukung untuk kustomisasi yang ada, tidak disarankan untuk menggunakannya lagi.
Operasi $expand offline mengembalikan anotasi yang @odata.nextLink berisi informasi tentang cara masuk ke informasi rekaman terkait. Kami menggunakan parameter , entityType, dan options anotasi tersebut iduntuk membuat satu atau beberapa permintaan tambahanXrm.WebApi.offline.retrieveRecord. Bagian kode berikut memberikan contoh lengkap tentang cara melakukan ini:
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
});
Untuk contoh selengkapnya tentang mengambil beberapa rekaman menggunakan API Web, lihat Data Kueri menggunakan API Web.
Artikel terkait
Mengkueri Data menggunakan Web API
Xrm.WebApi.retrieveRecord
Xrm.WebApi