Node调用MS Graph API v1.0/users接口遍历用户数组报错求助
解决方法
你的问题根源在于MS Graph API的v1.0/users接口返回的不是直接的用户数组,而是一个包含数组的响应对象,数组数据默认存放在value属性中。你直接对整个响应对象调用forEach,自然会报forEach is not a function的错误。
修改后的代码示例
const usersResponse = await fetch.callApi(auth.apiConfig.uri, authResponse.accessToken); // 提取响应中的用户数组 const usersList = usersResponse.value; usersList.forEach(user => { console.log(user.displayName); });
或者用对象解构简化代码:
const { value: usersList } = await fetch.callApi(auth.apiConfig.uri, authResponse.accessToken); usersList.forEach(user => { console.log(user.displayName); });
补充说明
MS Graph API的所有集合类接口(比如获取用户、邮件、文件等),都会将实际的数据列表包裹在value字段中返回,响应结构大致如下:
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users", "value": [ { "displayName": "bob dole" }, { "displayName": "steve stevenson" } ] }
你之前打印的输出可能省略了键名,但实际结构就是这样,所以必须先提取value对应的数组,才能使用数组的遍历方法。
内容的提问来源于stack exchange,提问作者user736893
相关产品推荐
相关产品推荐

