$pages.webAPI 物件
使用 Power Pages 用戶端 API $pages.webAPI 物件來建立、檢索、更新及刪除 Dataverse 紀錄,並處理儲存在檔案與影像欄位中的內容。
| 方法 | Description |
|---|---|
createRecord |
在指定的資料表中建立新紀錄。 |
retrieveRecord |
透過唯一識別碼檢索紀錄。 |
retrieveMultipleRecords |
根據提供的查詢選項擷取多筆紀錄。 |
updateRecord |
更新指定資料表中現有的紀錄。 |
deleteRecord |
從指定的表格中刪除記錄。 |
updateSingleProperty |
更新現有紀錄的單一欄位值。 |
deleteSingleProperty |
透過將現有紀錄中的單一欄位設為 null 來清除該欄位的值。 |
associateRecord |
透過使用集合值的導覽屬性,建立兩個紀錄之間的關聯。 |
disassociateRecord |
移除兩筆紀錄之間的關聯。 |
getRecordCount |
回傳指定表格中記錄的總數。 |
uploadFileToColumn |
將檔案或影像上傳至檔案欄位或現有紀錄的影像欄位。 |
downloadFileFromColumn |
下載檔案欄位或現有紀錄影像欄位的二進位內容。 |
createRecord 方法
在指定的資料表中建立新紀錄。
語法:$pages.webAPI.createRecord(entitySetName: string, data: object): Promise<string>
Returns:一個可解決為所建立紀錄 ID 的 承諾 。
createRecord 方法參數
提供目標資料表及代表該紀錄的資料物件。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 了解 Dataverse Web API 中的實體集合名稱 |
data |
物件 | 要建立紀錄資料。 |
createRecord 方法範例
此範例示範使用實體集合名稱與最小資料物件的呼叫 createRecord 方式。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
$pages.webAPI.createRecord('contacts', {
firstName: 'User',
lastName: 'Test'
});
});
retrieveRecord 方法
透過唯一識別碼檢索紀錄。
語法:$pages.webAPI.retrieveRecord(entitySetName: string, id: string, options?: string): Promise<object>
Returns:一個會解析到記錄物件的 承諾 。
retrieveRecord 方法參數
指定表格、記錄 ID 及可選的 OData $select 查詢選項以塑造回應。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 了解 Dataverse Web API 中的實體集合名稱。 |
id |
字串 | 紀錄的唯一識別碼。 |
options |
字串 (選擇性) | 可選的 OData $select 查詢字串用來限制回傳的資料。 |
Note
雖然參數options是可選的,但為了最佳效能,使用該$select選項時必須限制回傳的欄位數值。
retrieveRecord 方法範例
此範例以 ID 檢索單一紀錄,並透過 OData $select 查詢選項限制回傳欄位。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
let record = await $pages.webAPI.retrieveRecord('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', '$select=name');
});
retrieveMultipleRecords 方法
根據提供的查詢選項擷取多筆紀錄。
語法:$pages.webAPI.retrieveMultipleRecords(entitySetName: string, options?: string): Promise<object>
Returns:一個可解析為 OData 回應物件的 承諾 。
value回應的屬性包含記錄陣列。
retrieveMultipleRecords 方法參數
指定表格及可選的 OData 查詢以篩選結果並限制回傳欄位。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
options |
字串 (選擇性) | 用 OData 查詢選項字串來控制回傳的資料。 了解更多 Dataverse Web API 支援的 OData 查詢選項 |
Note
雖然參數options是可選的,但為了最佳效能,使用該$select選項時必須限制回傳的欄位數值。
retrieveMultipleRecords 方法範例
此範例可檢索多筆紀錄,並使用 OData $select 並 $top 限制回傳欄位與列數。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
let response = await $pages.webAPI.retrieveMultipleRecords('accounts', '$select=name&$top=3');
let records = response.value;
console.log(`Retrieved ${records.length} records.`);
});
updateRecord 方法
更新指定資料表中現有的紀錄。
語法:$pages.webAPI.updateRecord(entitySetName: string, id: string, data: object): Promise<void>
Returns:當紀錄更新時即解決的 承諾 。
updateRecord 方法參數
指定表格、要更新的記錄,以及要設定的欄位值。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
id |
字串 | 記錄的唯一識別碼以更新。 |
data |
物件 | 欄位和數值需要更新。 |
updateRecord 方法範例
此範例更新帳戶記錄名稱。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
await $pages.webAPI.updateRecord('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', { name: 'Updated Name' });
});
deleteRecord 方法
從指定的表格中刪除記錄。
語法:$pages.webAPI.deleteRecord(entitySetName: string, id: string): Promise<void>
Returns:當紀錄被刪除時,承諾會解決。
deleteRecord 方法參數
指定要刪除的資料表和記錄。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
id |
字串 | 刪除記錄的唯一識別碼。 |
deleteRecord 方法範例
這個例子刪除了帳戶紀錄。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
await $pages.webAPI.deleteRecord('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb');
});
updateSingleProperty 方法
更新現有紀錄的單一欄位值。
語法:$pages.webAPI.updateSingleProperty(entitySetName: string, id: string, property: string, value: unknown): Promise<void>
返回:當欄位更新時會解決的 承諾 。
updateSingleProperty 方法參數
指定表格、記錄、要更新的欄位和新值。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
id |
字串 | 記錄的唯一識別碼 |
property |
字串 | 待更新的專欄名稱。 |
value |
未知 | 欄位的新值。 |
updateSingleProperty 方法範例
此範例更新帳戶紀錄的名稱欄位。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
await $pages.webAPI.updateSingleProperty('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', 'name', 'New Name');
});
deleteSingleProperty 方法
透過將現有紀錄中的單一欄位設為 null 來清除該欄位的值。
語法:$pages.webAPI.deleteSingleProperty(entitySetName: string, id: string, property: string): Promise<void>
返回:當欄位值被清除時,承諾會被解析。
deleteSingleProperty 方法的參數
指定要清除的資料表、記錄和欄位。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
id |
字串 | 記錄的唯一識別碼 |
property |
字串 | 要清理的欄位名稱。 |
deleteSingleProperty 方法範例
此範例會清除帳戶記錄的描述欄。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
await $pages.webAPI.deleteSingleProperty('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', 'description');
});
associateRecord 方法
透過使用集合值的導覽屬性,建立兩個紀錄之間的關聯。 此方法使用 OData $ref 操作來建立連結。
語法:$pages.webAPI.associateRecord(entitySetName: string, id: string, navigationProperty: string, relatedEntitySetName: string, relatedId: string): Promise<void>
Returns:當紀錄被關聯時,承諾即告解決。
associateRecord 方法參數
先指定父記錄,然後是導航屬性和相關記錄。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 該實體將父紀錄的名稱設定在關係的一方。 |
id |
字串 | 父紀錄的唯一識別碼。 |
navigationProperty |
字串 | 定義關係的集合值導航屬性名稱。 |
relatedEntitySetName |
字串 | 該實體在關係的多方上設定了相關紀錄的名稱。 |
relatedId |
字串 | 關聯紀錄的唯一識別碼。 |
Important
務必先指定關係一側的父記錄,並使用 entitySetName 與 id 參數。
associateRecord 方法範例
此範例透過導航 contact_association 屬性將聯絡記錄與帳戶記錄關聯起來。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
await $pages.webAPI.associateRecord(
'accounts',
'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
'contact_association',
'contacts',
'cccccccc-0000-1111-2222-dddddddddddd'
);
});
disassociateRecord 方法
移除兩筆紀錄之間的關聯。
語法:$pages.webAPI.disassociateRecord(entitySetName: string, id: string, navigationProperty: string, relatedEntitySetName: string, relatedId: string): Promise<void>
退貨:當關聯被移除時即會生效的 承諾 。
disassociateRecord 方法參數
先指定父記錄,然後是導航屬性和相關記錄。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 該實體將父紀錄的名稱設定在關係的一方。 |
id |
字串 | 父紀錄的唯一識別碼。 |
navigationProperty |
字串 | 定義關係的集合值導航屬性名稱。 |
relatedEntitySetName |
字串 | 該實體設定了相關紀錄的名稱。 |
relatedId |
字串 | 相關紀錄的唯一識別碼,要解除關聯。 |
Important
務必先指定關係一側的父記錄,並使用 entitySetName 與 id 參數。
disassociateRecord 方法範例
此範例移除了帳戶紀錄與聯絡記錄之間的關聯。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
await $pages.webAPI.disassociateRecord(
'accounts',
'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
'contact_association',
'contacts',
'cccccccc-0000-1111-2222-dddddddddddd'
);
});
getRecordCount 方法
回傳指定表格中記錄的總數。 此方法呼叫 OData /$count 端點,回傳整數而非記錄集合。
語法:$pages.webAPI.getRecordCount(entitySetName: string): Promise<number>
退還:一個以記錄數量為結 算的承諾 。
getRecordCount 方法參數
指定要計數紀錄的表格。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
Note
伺服器回傳最多 5,000 個。 當一個資料表包含超過 5,000 筆紀錄時,結果為 5,000 筆。 若要連同記錄數量一併檢索,請使用 returnMultipleRecords 方法 搭配 $count=true 查詢選項 。 該方法會回傳回應屬性中的 value 集合,以及該 @odata.count 屬性中的總計數。
getRecordCount 方法範例
此範例回傳帳戶記錄總數。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
const total = await $pages.webAPI.getRecordCount('accounts');
console.log(`Total accounts: ${total}`);
});
uploadFileToColumn 方法
將檔案或影像上傳至檔案欄位或現有紀錄的影像欄位。 Dataverse 會儲存二進位內容,並自動更新帶有檔案名稱的欄位。{columnName}_Name
語法:$pages.webAPI.uploadFileToColumn(entitySetName: string, id: string, columnName: string, file: File): Promise<void>
Returns:檔案上傳時即終止的 承諾 。
uploadFileToColumn 方法參數
指定要上傳的資料表、記錄、欄位和檔案。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
id |
字串 | 記錄的唯一識別碼 |
columnName |
字串 | 檔案或影像欄位的邏輯名稱。 |
file |
File | 要上傳的檔案。 |
Note
你可以用這個方法來處理圖片欄位。 Dataverse 會移除伺服器上的 EXIF 元資料,並自動產生縮圖。 使用 downloadFileFromColumn 的方法 來下載完整圖片或縮圖。
uploadFileToColumn 方法範例
這個範例是上傳一個檔案,有人透過檔案輸入元素選擇該檔案。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
const fileInput = document.querySelector('input[type="file"]');
if (!fileInput || fileInput.files.length === 0) {
return;
}
const file = fileInput.files[0];
await $pages.webAPI.uploadFileToColumn('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', 'new_attachment', file);
});
downloadFileFromColumn 方法
下載檔案欄位或現有紀錄影像欄位的二進位內容。 大型檔案會以 4 MB 的區塊下載,並自動合併成一個 Blob。
語法:$pages.webAPI.downloadFileFromColumn(entitySetName: string, id: string, columnName: string, options?: object): Promise<Blob>
返回:一個 承諾,解析 為包含二進位資料的 Blob 。
type Blob 的屬性包含伺服器回傳的 MIME 類型。
downloadFileFromColumn 方法參數
指定要下載的資料表、記錄和欄位。
| 參數 | 類型 | Description |
|---|---|---|
entitySetName |
字串 | 實體集的名稱。 |
id |
字串 | 記錄的唯一識別碼 |
columnName |
字串 | 檔案或影像欄位的邏輯名稱。 |
options |
物件(可選) | 下載選項。 此 size 屬性適用於圖片欄位,並可 full 下載原始圖片或 thumbnail Dataverse 產生的縮圖。 預設值為 full。 |
Note
回覆中沒有包含檔案名稱。 要取得檔案名稱,請使用 retrieveRecord 方法 查詢記錄的欄位 {columnName}_Name 。
downloadFileFromColumn 方法範例
此範例從檔案欄位下載檔案,並提示瀏覽器儲存。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
const blob = await $pages.webAPI.downloadFileFromColumn('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', 'new_attachment');
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'downloaded_file';
a.click();
URL.revokeObjectURL(url);
});
此範例是從圖片欄下載完整圖片和縮圖。
Microsoft.PowerPages.onPagesClientApiReady(async function ($pages) {
// Full-resolution image, which is the default.
const fullBlob = await $pages.webAPI.downloadFileFromColumn('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', 'entityimage');
// Thumbnail that Dataverse generates.
const thumbnailBlob = await $pages.webAPI.downloadFileFromColumn(
'accounts',
'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
'entityimage',
{ size: 'thumbnail' }
);
});