firebase / firebase/firebase-admin-node

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

Đang mở
#2,350 4 bình luận 1 reaction 0 người được giao Xem trên GitHub
api: database
Ngôn ngữ chính
TypeScript
Star
1.7k
Fork
419
Merge trung bình
3 ngày 10 giờ
Pull request đã merge (30 ngày)
16

Mô tả

### [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;
}
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.