Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Firebase query orderByKey().limitToFirst(n).startAfter() returns n-1 items iso n

Abierto
#2,350 4 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
firebase, node.js, typescript
Área
databases

Línea de trabajo

Comienza con la cadena de consultas admin.database.Database.ref mostrada en el issue, especialmente orderByKey(), limitToFirst() y startAfter(). Reproduce la diferencia entre SDK 11.11.0 y 11.4.1 usando el bucle de paginación proporcionado. Se considera completado cuando una consulta que solicita 100 elementos después de lastDocument.key devuelve 100 mientras queden suficientes claves, con cobertura para la regresión.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

api: database
[READ] Step 1: Are you in the right place?

yes

[REQUIRED] Step 2: Describe your environment
  • Operating System version: Ubuntu 22.04 lts
  • Firebase SDK version: 11.11.0
  • Firebase Product: realtime database (auth, database, storage, etc)
  • Node.js version: 16.20.2
  • NPM version: 8.19.4
[REQUIRED] Step 3: Describe the problem

Firebase query of type:
admin.database.Database.ref('collection').orderByKey().limitToFirst(100).startAfter(lastKey) only returns 99 items iso 100 even if more keys are in the firebase realtime database.

On version 11.4.1 of firebase-admin this query behaves as expected and 100 items are returned.

Steps to reproduce:

What happened? How can we make the problem occur?
This could be a description, log/console output, etc.

Relevant Code:
let query;
let lastDocument = null;
let lastBatchSize: number = 100;

while (lastBatchSize === 100) {
    query = database.ref('collection').orderByKey()
      .limitToFirst(100);

    if (lastDocument !== null) {
      query = query.startAfter(lastDocument.key);
    }

    const snapshot = await query.get();
    const keys = Object.keys(snapshot.val() || {});
    const docs = keys.map((key) => snapshot.child(key));

    if (docs.length === 0) break;
    console.log("docs length " + docs.length); //prints 99 on 11.11.0, prints 100 on 11.4.1

    if (docs.length) {
      lastDocument = docs[docs.length - 1];
    }
    lastBatchSize = docs.length;
  }
Lenguaje dominante
TypeScript
Estrellas
1.7k
Forks
419
Merge medio
4 d 20 h
PR fusionados (30 d)
16

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de firebase/firebase-admin-node

Todos los issues de firebase/firebase-admin-node

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.