Estoy usando Firebase v9.0.2
Uncaught TypeError: Cannot read properties of undefined (reading 'pieceNum_') <-- 4361 --> https://www.gstatic.com/firebasejs/9.0.2/firebase-database.js CHAT_ROOT es /chats/${chatroomid} . El valor de chatroomid se toma de la entrada del usuario anterior.
import { Database } from 'initAppGlobals.js'; import * as FirebaseDB from 'https://www.gstatic.com/firebasejs/9.0.2/firebase-database.js'; // this code contains nesting of unction calls FirebaseDB.onValue( FirebaseDB.limitToLast(1, FirebaseDB.orderByKey( FirebaseDB.ref(Database, CHAT_ROOT) ) ), (snapshot) => { // Load messages into UI as HTML }, (error) => { // display error message }); El código anterior funciona solo si elimino las funciones limitToLast y orderByKey .
import { Database } from 'initAppGlobals.js'; import * as FirebaseDB from 'https://www.gstatic.com/firebasejs/9.0.2/firebase-database.js'; // this code contains nesting of function calls FirebaseDB.onValue( FirebaseDB.ref(Database, CHAT_ROOT), (snapshot) => { // Load messages into UI as HTML }, (error) => { // display error message });Pero eso afecta el rendimiento a medida que crece el tamaño de la base de datos.
{ "chats": { "$chatroomid": { ".read": "auth !== null", ".write": "auth !== null", ".indexOn": ".value" } } }Está anidando las llamadas demasiado lejos y no está creando una consulta a partir de las condiciones.
Para crear una consulta, necesita una referencia y luego una serie de operaciones de consulta, por lo que:
const query = FirebaseDB.query( FirebaseDB.ref(Database, CHAT_ROOT), FirebaseDB.limitToLast(1), FirebaseDB.orderByKey() );Luego puede ejecutar la consulta con:
FirebaseDB.onValue(query, (snapshot) => { // Load messages into UI as HTML }, (error) => { // display error message });