Firebase云功能Admin SDK - 列出用户 - 分页问题
Posted
技术标签:
【中文标题】Firebase云功能Admin SDK - 列出用户 - 分页问题【英文标题】:Firebase cloud function Admin SDK - listing user - problem with pagination 【发布时间】:2022-01-23 13:59:58 【问题描述】:我已经实现了一个 HTTP 可调用函数来获取所有用户。正如您在我的代码中看到的,问题在于requestedPageToken
(来自客户端调用)与listUsersResult.pageToken
(从listusers
函数返回)相同。我的客户端应用程序一遍又一遍地使用相同的令牌调用此函数,但它只获取用户的第一页,因为listUsersResult
返回相同的令牌而不是下一页令牌。这是我的 TypeScript 代码:
export const listAllUsers = functions.https.onCall((data, context) =>
try
if (data !== null)
const requestedPageToken = data.text;
console.log("PageToken is: " + data);
return admin.auth().listUsers(50, requestedPageToken)
.then((listUsersResult) =>
console.log("New PageToken is: " + listUsersResult.pageToken);
return listUsersResult;
).catch((reason) =>
return Promise.reject(
new Error(reason));
);
else
return admin.auth().listUsers(50);
catch (error)
console.error("Error: " + error);
return Promise.reject(error);
);
我找不到问题出在哪里。为什么我没有获得下 50 个用户的令牌?
【问题讨论】:
您的日志信息打印正确吗? 是的,这是这两条日志消息的日志输出:PageToken is: 2Sq0O25MHMgXdcQMz5M0...
,这是另一条New PageToken is: 2Sq0O25MHMgXdcQMz5M0...
Sweet,所以问题正是我想的那样:data
是一个字符串,data.text
将返回 undefined
(因为字符串没有 text 属性),这意味着您有效地调用 admin.auth().listUsers(50, undefined)
与 admin.auth().listUsers(50)
相同 - 所以没有令牌,结果相同。
【参考方案1】:
好的,现在可以了。我犯了一个错误。下一行:
const requestedPageToken = data.text;
应该是:
const requestedPageToken = data;
我不确定此更改如何影响函数返回的内容,但它现在仍然有效。
【讨论】:
以上是关于Firebase云功能Admin SDK - 列出用户 - 分页问题的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Admin SDK sendToTopic 不起作用
firebase 云功能中带有 typescript 的 firebase-admin
Firebase Cloud Messaging:Firebase Admin SDK 中的设备组发送支持
Firebase 的云功能 - 即使我正在为 firebase-admin 功能发出出站 http 请求,也会出现网络错误