首页 > 解决方案 > 从 Firebase AdminSDK 过滤用户

问题描述

我想在这里实现的是,我应该能够在数组中传递电话号码,结果应该包含与数组中包含的电话号码匹配的用户结果。

检索所有用户工作正常,但我无法找出如何过滤结果。

exports.listUsers = functions.https.onRequest(async(req, res) => {
    // List batch of users, 1000 at a time.
    const nextPageToken = req.query.token
    const mobileNumbers = req.query.phoneNumbers

    admin.auth().listUsers(1000, nextPageToken)
        .then(function(listUsersResult) {
            listUsersResult.users.forEach(function(userRecord) {
                console.log('user', userRecord.toJSON());
            });

            if (listUsersResult.pageToken) {
                // List next batch of users.
                listAllUsers(listUsersResult.pageToken);
            }

            return res.send(listUsersResult);
        })
        .catch(function(error) {
            console.log('Error listing users:', error);
        });
});

标签: node.jsfirebasefirebase-authenticationfirebase-admin

解决方案


Firebase Admin SDK 提供 API,用于通过电话号码电子邮件检索个人用户。但是,没有批量检索 API 用于按phoneNumber或等属性过滤/查询所有用户email

解决方法 1:检索所有用户并过滤

  • 检索所有用户的列表
  • 过滤列表

解决方法 2:将用户存储在另一个数据库中

如果过滤大量用户群是您的应用程序的常见操作,那么您可以通过将用户存储在单独的数据库中来提高性能。

  • 当新用户注册时,将用户信息存储在另一个数据库中,例如 Firestore、MySQL、PostgreSQL。
  • 使用标准查询功能过滤结果

推荐阅读