客户端 API Dataverse 记录、文件和图像

$pages.webAPI 对象

使用 Power Pages 客户端 API $pages.webAPI 对象创建、检索、更新和删除 Dataverse 记录,以及处理存储在文件和图像列中的内容。

方法 说明
createRecord 在指定的表中创建新记录。
retrieveRecord 按记录的唯一标识符检索记录。
retrieveMultipleRecords 基于提供的查询选项检索多个记录。
updateRecord 更新指定表中的现有记录。
deleteRecord 从指定表中删除记录。
updateSingleProperty 更新现有记录的单个列值。
deleteSingleProperty 通过将单个列设置为 null,清除现有记录中的单个列的值。
associateRecord 使用集合值导航属性在两个记录之间创建关联。
disassociateRecord 删除两条记录之间的关联。
getRecordCount 返回指定表中的记录总数。
uploadFileToColumn 将文件或图像上传到现有记录的文件列或图像列。
downloadFileFromColumn 下载文件列的二进制内容或现有记录的图像列。

createRecord 方法

在指定的表中创建新记录。

语法:$pages.webAPI.createRecord(entitySetName: string, data: object): Promise<string>
返回:解析为所创建记录的 ID 的 Promise 。

createRecord 方法参数

提供表示要创建的记录的目标表和数据对象。

Parameter 类型 说明
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>
返回:解析为记录对象的 Promise 。

retrieveRecord 方法参数

指定表、记录 ID 和可选的 OData $select 查询选项以调整响应。

Parameter 类型 说明
entitySetName 字符串 实体集的名称。 了解 Dataverse Web API 中的实体集名称。
id 字符串 记录的唯一标识符。
options 字符串(可选) 可选的 OData $select 查询字符串,用于限制返回的数据。

注释

虽然参数 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>
返回:解析为 OData 响应对象的 Promise 。 响应 value 的属性包含记录数组。

retrieveMultipleRecords 方法参数

指定表和可选的 OData 查询以筛选结果并限制返回的列。

Parameter 类型 说明
entitySetName 字符串 实体集的名称。
options 字符串(可选) 用于控制返回数据的 OData 查询选项字符串。 详细了解 Dataverse Web API 支持的 OData 查询选项

注释

虽然参数 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>
返回:更新记录时解析的 Promise 。

updateRecord 方法参数

指定要更新的表、要更新的记录以及要设置的列值。

Parameter 类型 说明
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>
返回:在删除记录时解析的 Promise 。

deleteRecord 方法参数

指定要删除的表和记录。

Parameter 类型 说明
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>
返回:更新列时解析的 Promise 。

updateSingleProperty 方法参数

指定要更新的表、记录、列以及新值。

Parameter 类型 说明
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>
返回:清除列值时解析的 Promise 。

deleteSingleProperty 方法参数

指定要清除的表、记录和列。

Parameter 类型 说明
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>
返回:一个 承诺 ,用于解析与记录关联的时间。

associateRecord 方法参数

首先指定父记录,然后指定导航属性和相关记录。

Parameter 类型 说明
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>
返回:删除关联时解析的 Promise 。

disassociateRecord 方法参数

首先指定父记录,然后指定导航属性和相关记录。

Parameter 类型 说明
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>
返回:解析为记录数的 Promise 。

getRecordCount 方法参数

指定要在其中对记录进行计数的表。

Parameter 类型 说明
entitySetName 字符串 实体集的名称。

注释

服务器返回的最大计数为 5,000。 当表包含超过 5,000 条记录时,结果为 5,000。 若要将记录及其总计数一起检索,请改用带有查询选项的$count=trueretrieveMultipleRecords 方法。 该方法返回响应属性中的 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>
返回:上传文件时解析的 Promise 。

uploadFileToColumn 方法参数

指定要上传的表、记录、列和文件。

Parameter 类型 说明
entitySetName 字符串 实体集的名称。
id 字符串 记录的唯一标识符。
columnName 字符串 文件或图像列的逻辑名称。
file 文件 要上传的文件。

注释

可以将此方法用于图像列。 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 方法参数

指定要从中下载的表、记录和列。

Parameter 类型 说明
entitySetName 字符串 实体集的名称。
id 字符串 记录的唯一标识符。
columnName 字符串 文件或图像列的逻辑名称。
options 对象(可选) 下载的选项。 该 size 属性适用于图像列,并接受 full 下载原始图像或 thumbnail 下载 Dataverse 生成的缩略图。 默认值为 full。

注释

响应不包括文件名。 若要获取文件名,请使用 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' }
    );
});