分批加载用户的电子邮件

已完成

你构建了一个 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 中的 topskip 方法)来检索特定的数据页。 在使用电子邮件时,这一点是无法实现的,因为电子邮件文件夹中可能会包含可能影响分页的非电子邮件数据。 因此,在使用电子邮件时,应始终使用 @odata.nextLink 值来加载更多数据。

后续步骤

让我们扩展该应用,以便其允许用户以批量加载的方式加载更多电子邮件。