Nonetheless, this is an excellent service if all you need is storing user data and dealing with real-time issues.
Crisp is a a dead-simple live chat focused on user-experience.
This means that you will have to do things like such: and populate users. Picture the whole thing with more relations, and you get a spaghetti logic.
Some people will say that it could be something improved with pagination, but with Firebase, you cannot paginate because you cannot get query array length, you cannot paginate ordered arrays, etc... It's works like "git commits", but the main issue is that if you client goes offline and then online and you have concurrency on some input data (for instance, a shared notepad), you might have inconsistencies. With Firebase, you can't deal easily with data-migration like you can do with a simple SQL database, an ORM or ODM.
Note that this article covers the production aspect of using Firebase Realtime Database, and we still think that this solution still great to build MVPs, Hackathon Projects, or if you have your own reasons.
Edit: Firebase reached us and was very receptive to the issues we encountered.
We wanted to make a cost-effective solution so we decided to use a Socket.
IO backend to deal with live-chat on websites and in the same time, using Firebase for our dashboard, all synced with AMQP on the backend-side.