firebase / firebase/firebase-admin-node

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
api: database
Lenguaje dominante
TypeScript
Estrellas
1.7k
Forks
419
Merge medio
3 d 10 h
PR fusionados (30 d)
16

Descripción

### [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:

```typescript
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;
}
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.