【问题标题】:Filter User From Firebase AdminSDK从 Firebase Admin SDK 过滤用户
【发布时间】:2019-09-08 09:02:00
【问题描述】:

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

检索所有用户工作正常,但我不知道如何过滤结果。

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);
        });
});

【问题讨论】:

  • 过滤结果到底是什么意思?
  • 现在,它正在从 Firebase 检索所有用户,我想根据数组中提供的电话号码过滤结果。就像 MySQL 中的“IN”查询一样。

标签: node.js firebase firebase-authentication firebase-admin


【解决方案1】:

Firebase Admin SDK 为 retrieving individual users by phone numberby email 提供 API。但是,没有批量检索 API 可以通过 phoneNumberemail 等属性过滤/查询所有用户。

解决方法 1:Retrieve all users 和过滤器

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

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

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

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

【讨论】:

  • 感谢您的回复。我确实尝试过 Firestore,但似乎它也缺少 IN 查询子句。我想提供一个电话号码列表,如果它存在,它应该返回用户。
猜你喜欢
  • 1970-01-01
  • 2021-09-21
  • 2018-03-20
  • 2019-01-21
  • 2020-03-23
  • 2017-12-26
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多