firebase / firebase/firebase-admin-node
Realtime Database - reading data gives wrong value if transaction is pending
- Vorherrschende Sprache
- TypeScript
- Sterne
- 1.7k
- Forks
- 419
- Ø Merge
- 3 T. 10 Std.
- Gemergte PRs (30 T.)
- 16
Beschreibung
### [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.
Beitragsleitfaden
Rechercherichtung
Beginne mit der Node.js-Reproduktion unter Verwendung von admin.database().ref(...).transaction(...), gefolgt von parent ref.once('value', ...), und vergleiche das zurückgegebene Array mit und ohne die Transaktion. Lies das Verhalten von Realtime Database bei Transaktionen und Lesevorgängen, um das beabsichtigte Ergebnis zu bestimmen; abgeschlossen ist die Aufgabe, wenn der Fall einer ausstehenden Transaktion korrigiert oder wie vorgesehen ausdrücklich geklärt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, node.js
- Bereich
- database
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100