firebase / firebase/firebase-admin-node

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

Abierto
#2,634 0 comentarios 0 reacciones 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

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

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.