分批加载用户的电子邮件
你构建了一个 JavaScript 应用,将其连接到 Microsoft 365,并使用 Microsoft Graph 显示用户最近的 10 封电子邮件。 现在,让我们扩展该应用,以便用户可以按每次 10 封的形式批量加载电子邮件。
使用 Microsoft Graph 检索分页数据
在调用会返回数据集合的 Microsoft Graph API(例如前面使用的消息 API)时,你会收到存储在 Microsoft 365 中的数据的子集。 若要验证是否有更多数据可供你的应用检索,请检查响应是否包含 @odata.nextLink
属性。
var emails = graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.top(10)
.get();
if (emails['@odata.nextLink']) {
// more data available
}
@odata.nextLink
属性包含一个完整的 URL,你可以调用该 URL 来检索结果的第二页。 此 URL 会保留初始请求中的所有配置,例如要检索的属性、如何对数据进行排序以及要获取的项数。
若要加载下一批数据,请将 @odata.nextLink
中返回的 URL 传递给 graphClient
:
var emails = graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.top(10)
.get();
if (emails['@odata.nextLink']) {
var moreEmails = graphClient
.api(emails['@odata.nextLink'])
.get();
}
检索结果的第二页后,可以通过检查结果是否设置了 @odata.nextLink
属性来查看是否还有更多数据。
警告
Microsoft Graph 遵循 OData 4 标准。 该标准的要求之一便是能够组合使用 $top
和 $skip
参数(Microsoft Graph SDK 中的 top
和 skip
方法)来检索特定的数据页。 在使用电子邮件时,这一点是无法实现的,因为电子邮件文件夹中可能会包含可能影响分页的非电子邮件数据。 因此,在使用电子邮件时,应始终使用 @odata.nextLink
值来加载更多数据。
后续步骤
让我们扩展该应用,以便其允许用户以批量加载的方式加载更多电子邮件。