Как вы перечисляете всех пользователей в функции firebase firestore

avatar
Bhagyesh
8 апреля 2018 в 01:31
6665
2
7

Я изучил функции Firebase firestore, и я хотел составить список всех пользователей, а затем сравнить значение с тем, что они сохранили. Например, если есть 20 пользователей, и я хочу увидеть всех пользователей с именем «майк», как я могу получить массив пользователей, чтобы я мог сравнить их, чтобы найти всех пользователей с именем «майк»?

Я бегу:

"firebase-admin": "^5.11.0",
"firebase-functions": "^1.0.0"

Я видел этот фрагмент кода для администратора firebase, но я не думаю, что он работает, поскольку он не был помечен как функция firestore, но если это произойдет, если я верну "admin.auth().listUsers...", буду ли я получить список пользователей?

    function listAllUsers(nextPageToken) {
  // List batch of users, 1000 at a time.
  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)
      }
    })
    .catch(function(error) {
      console.log("Error listing users:", error);
    });
}
Источник
Frank van Puffelen
8 апреля 2018 в 02:24
0

Код, который вы показываете (из этого раздела документации для тех, кто заинтересован) точно показывает, как получить массив пользователей из Firebase Authentication. Однако это не имеет ничего общего с Cloud Firestore и не имеет ничего общего с облачными функциями для Firebase. Если вы хотите получить список пользователей, я предлагаю вам сначала попробовать запустить этот код в локальном скрипте Node.js, а затем работать оттуда.

Bhagyesh
8 апреля 2018 в 02:35
0

@FrankvanPuffelen, но как мне подключиться к функциям в облаке?

Frank van Puffelen
8 апреля 2018 в 03:24
0

Я настоятельно рекомендую делать это шаг за шагом. Сначала заставьте его работать в локальной системе Node.js. Когда у вас все заработает и вы будете готовы перенести его в Cloud Functions, чтобы вы могли вызывать его из своего приложения, посмотрите здесь: firebase.google.com/docs/functions/callable

Ответы (2)

avatar
Hadi Faramarzi
24 декабря 2019 в 12:23
0

Вот как я это сделал:

const functions = require('firebase-functions');
const admin = require('firebase-admin')

admin.initializeApp()

const express = require('express')
const app = express()

app.get('/users', async (req, res) => {
    try {
        const listUsers = await admin.auth().listUsers()

        return res.status(200).send({ listUsers })
    } catch (err) {
        return handleError(res, err)
    }
})

exports.api = functions.https.onRequest(app)

здесь показан список пользователей, но нужно еще немного доработать

Обновление

    exports.getAllUsers = async (req, res) => {
    var allUsers = [];
    return admin.auth().listUsers()
        .then(function (listUsersResult) {
            listUsersResult.users.forEach(function (userRecord) {
                // For each user
                var userData = userRecord.toJSON();
                allUsers.push(userData);
            });
            res.status(200).send(JSON.stringify(allUsers));
        })
        .catch(function (error) {
            console.log("Error listing users:", error);
            res.status(500).send(error);
        });
}
SuperUberDuper
18 января 2020 в 14:18
0

почему бы не использовать res.json(данные)

Hadi Faramarzi
19 января 2020 в 16:49
0

@SuperUberDuper на самом деле я изменил код на этот: exports.getAllUsers = async (req, res) => { var allUsers = []; return admin.auth().listUsers() .then(function (listUsersResult) { listUsersResult.users.forEach(function (userRecord) { // Для каждого пользователя var userData = userRecord.toJSON(); allUsers.push(userData); }); res.status(200).send(JSON.stringify(allUsers)); }) }

nadeesh
23 сентября 2020 в 16:12
0

его единственный возврат первых 1000 пользователей

avatar
Dartvales
25 мая 2018 в 11:03
0

Возможно, вам следует выполнить этот поиск с помощью функции getUserByDisplayName(). Вы можете увидеть это в этом руководстве по Firebase: https://firebase.google.com/docs/auth/admin/manage-users#list_all_users. Но, как сказал Фрэнк, это не имеет ничего общего с firebase-functions.. Это часть аутентификации Firebase

.

Надеюсь, это поможет!

Bhagyesh
28 мая 2018 в 08:39
0

это для sdk не API