firebase / firebase/firebase-admin-node

Realtime Database - reading data gives wrong value if transaction is pending

Ouverte
#2,634 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
api: database
Langage dominant
TypeScript
Étoiles
1.7k
Forks
419
Merge moyen
3 j 10 h
PR mergées (30 j)
16

Description

### [REQUIRED] Step 2: Describe your environment

* Operating System version: macOS 14.5 (23F79)
* Firebase SDK version: 12.2.0
* Firebase Product: database
* Node.js version: v20.13.0
* NPM version: v10.5.2

### [REQUIRED] Step 3: Describe the problem

If a transaction is pending for a node, it doesn't show up when reading data for the parent node with `.once("value", ...)`. I'm not sure if this is a bug or intended behavior.

#### Steps to reproduce:

For these examples, our database looks like this:

```json
{
"example_list": [
"a",
"b",
"c"
]
}
```

This code works as expected:

```js
let ref = admin.database().ref("example_list");

ref.once('value', (snap) => {
console.log(snap.val())
});
```

Logs: `[ 'a', 'b', 'c' ]`

This code does NOT work as expected:

```js
admin.database().ref("example_list/1").transaction((currentData) => {
return currentData;
});

let ref = admin.database().ref("example_list");

ref.once('value', (snap) => {
console.log(snap.val())
});
```

Logs: `[ 'a', <1 empty item>, 'c' ]`

Adding a transaction first, which seems like a no-op, actually causes the read to return a different result.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par la reproduction Node.js utilisant admin.database().ref(...).transaction(...), suivie de parent ref.once('value', ...), et comparez le tableau renvoyé avec et sans la transaction. Consultez le comportement des transactions et des lectures de Realtime Database afin de déterminer le résultat attendu ; la tâche est terminée lorsque le cas de la transaction en attente est corrigé ou explicitement résolu comme prévu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, node.js
Domaine
database
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.