I have some of these frustrations as well, but I’m currently using Firebase in a decent size production app and still like it overall. My biggest pain with the database is not being able to grab a subsection easily, or being able to shallowly return a record.
Say I have keys [a, b, c, d, e] on record my_record. How long until I can get just a few of them with something like
db.ref('my_record').child([a, c, e]).once('value', snap => ...)?