instalar auth angularjs firebase angularfire

angularjs - auth - firebase github angular



Intentando obtener registros secundarios de Firebase (2)

Estoy en la etapa de tutorial de fuego angular y experimento con mensajes y publicaciones secundarias, por alguna extraña razón que no puedo ver a los niños cuando explícitamente intento mostrarlos, pero puedo verlo al expandirme en el nodo padre en la consola. Estos mensajes se muestran correctamente en el html donde tengo ng-repeat, así que sé que recibo los mensajes, al menos, sin hijos.

Pensé que los utilitarios de semillas de fuego angular podrían estar cortando o cortando algunos niños, así que volví a la base de fuego directa.

Esto es lo que tengo:

Code: ----- var url = fbutil.ref() + "/messages/"; var ref = new Firebase(url); var sync = $firebase(ref).$asArray(); console.log(sync); //this I can see as a proper $firebaseArray object console.log(sync.length); //this displays as 0 even though length is 3 in object above console.log(sync[1]); //displays as undefined Data: ---- messages/id1/text /id2/text /id2/post /id3/text

¡Gracias de antemano por señalar lo que estoy asumiendo erróneamente!


Parece que te estás enamorando del problema de la asincronía común.

Este es tu fragmento de código:

var sync = $firebase(ref).$asArray(); console.log(sync); //this I can see as a proper $firebaseArray object console.log(sync.length); //this displays as 0 even though length is 3 in object above console.log(sync[1]); //displays as undefined

La llamada a $asArray() no devuelve una matriz de Firebase inmediatamente, ya que los datos pueden tardar un poco en bajar de los servidores de Firebase. Por lo tanto, en su lugar, devuelve la promesa de una matriz de Firebase, algo que en el futuro contendrá sus datos.

Cuando inspeccione fuera de console.log(sync) en la consola, los datos se habrán descargado, por lo que es (como usted dice) una matriz sincronizada adecuada. Pero cuando se ejecuta la línea console.log(sync.length) , es probable que los datos aún no se hayan descargado.

Puede esperar a que los datos se descarguen con el método $loaded() . Asi que:

var sync = $firebase(ref).$asArray(); console.log(sync); sync.$loaded().then(function(sync) { console.log(sync.length); console.log(sync[1]); }