es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Firebase función en la nube Admin SDK – listado de usuarios – problema con la paginación

He implementado una función HTTP llamable para obtener todos los usuarios. Como puedes ver en mi código, el problema es que requestedPageToken (desde la llamada del cliente) es el mismo que listUsersResult.pageToken (retornado desde la función listusers). Mi aplicación cliente llama a esta función una y otra vez con el mismo token, pero sólo obtiene la primera página de usuarios porque listUsersResult devuelve el mismo token y no el siguiente token de página. Aquí está mi código de 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);
    }
});

No pude encontrar dónde está el problema. ¿Por qué no estoy obteniendo el token para los siguientes 50 usuarios?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema radica en la forma en que se está utilizando requestedPageToken en la función. El valor de data.text se asigna a requestedPageToken en lugar de data.pageToken. Esto significa que requestedPageToken siempre es nulo o indefinido, por lo que la función siempre devuelve la primera página de usuarios. Para solucionar esto, reemplace const requestedPageToken = data.text; con const requestedPageToken = data.pageToken; en el código. Al hacer esto, se pasará el valor correcto de pageToken a la función listUsers(), y la función debería devolver la siguiente página de usuarios.

Comments are closed.