Microsoft Graph 客户端 - Promise - 下一个 .then() 的返回值未定义

问题描述 投票:0回答:1

我正在努力将 Promise 的结果返回到下一个

.then
函数。 我确信我是盲目的,这确实是一个小问题,但实际上我看不出为什么下一个
.then
函数的参数总是
undefined

这是我的承诺:

await this.props.context.msGraphClientFactory
  .getClient('3')
  .then(async (client: MSGraphClientV3) => {
    return await client
      .api(`/groups/{${this.state.group?.id}}/members`)
      .version("v1.0")
      .get(async (err, res) => {

        if (err) {
          console.error(err);
          return;
        }

        return res.value;
      });
    })
    .then(async (users: Array<MicrosoftGraph.User>) => {
      //users is always undefined
      ...

查看调试截图:

res.value
设置正确:

...但在下一个

.then
函数中,参数未定义:

有人可以告诉我,我做错了什么吗?非常感谢!

reactjs typescript promise microsoft-graph-api
1个回答
0
投票

我不熟悉打字稿中的转换,但端点

GET /groups/{groupId}/members
默认返回
directoryObject
的集合。

user
源自
directoryObject
,在
then
方法中,您期望
user
的集合,并且可能不会执行转换。

我希望如此

.then(async (members: Array<MicrosoftGraph.DirectoryObject>) => {...}

应该可以工作,然后尝试在方法中将

directoryObject
转换为
user

或者如果你想真正检索用户,你可以进行服务器强制转换

await this.props.context.msGraphClientFactory
  .getClient('3')
  .then(async (client: MSGraphClientV3) => {
    return await client
      .api(`/groups/{${this.state.group?.id}}/members/microsoft.graph.user`)
      .version("v1.0")
      .get(async (err, res) => {

        if (err) {
          console.error(err);
          return;
        }

        return res.value;
      });
    })
    .then(async (users: Array<MicrosoftGraph.User>) => {..}

https://learn.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0&tabs=http#optional-query-parameters

© www.soinside.com 2019 - 2024. All rights reserved.