Estoy trabajando con firebase por primera vez. Para eso estoy usando Firestore. Para obtener todos los mensajes, uso el método integrado de Firebase querySnapshot ; Aquí obtengo todas las filas como un objeto, donde declaro una variable global como una matriz e intento insertar todos y cada uno de los objetos en esa matriz. Todo fue perfecto. Tengo la matriz con todos los mensajes que quiero. Pero quiero obtener la longitud de una matriz. Y no sé cada vez que obtuve 0 como salida donde tiene dos filas. Veamos la imagen para una mejor comprensión 
Por favor, ayúdame a resolver esto..
Supongo que showMessages() llamó antes de enviar algo a la matriz user_messages en la devolución de llamada onSnapshot .
onSnapshot le permite escuchar instantáneas. Eso significa que no puede garantizar que su controlador haya sido llamado ni siquiera una vez antes de que se invoque showMessages .
Podría reordenar su flujo de control de esta manera:
// ... user_chats.onSnapshot((querySnapshot) => { querySnapshot.forEach(doc => { user_messages.push(doc.data()); }); showMessages(); }); // ...