【问题标题】:Firebase cloud function Admin SDK - listing user - problem with paginationFirebase云功能Admin SDK - 列出用户 - 分页问题
【发布时间】: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) 相同 - 所以没有令牌,结果相同。

标签: node.js firebase-authentication google-cloud-functions firebase-admin


【解决方案1】:

好的,现在可以了。我犯了一个错误。下一行:

const requestedPageToken = data.text;

应该是:

const requestedPageToken = data;

我不确定此更改如何影响函数返回的内容,但它现在仍然有效。

【讨论】:

    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 2017-10-28
    • 2019-05-16
    • 2020-11-21
    相关资源
    最近更新 更多