i have started switching app parse firebase. going great far, have not been able find firebase equivalent method parse's wherecontainedin(string key, collection values).
this useful method allowed me pass in array of ids , return of rows matched id. far firebase, have returning all of rows in database looping through them see if row's id contained in array of ids. other way query each id individually, doesn't work firebase's asynchronous behavior. doing first approach:
list<string> userids = new arraylist<>(); userids.add("2"); userids.add("32"); userids.add("12545"); userids.add("187"); databasereference firebaseref = firebasedatabase.getinstance().getreference(); query queryref = firebaseref.child("videos"); queryref.addlistenerforsinglevalueevent(new valueeventlistener() { @override public void ondatachange(datasnapshot datasnapshot) { list<video> usersvideos = new arraylist<video>(); (datasnapshot videosnapshot : datasnapshot.getchildren()) { video video = videosnapshot.getvalue(video.class); if (userids.contains(video.userid)) { usersvideos.add(video); } } // usersvideos populated videos users } @override public void oncancelled(databaseerror databaseerror) { log.d(tag, "cancelled"); } });
neither of these methods seem reasonable since table contain hundreds of thousands of records.
any appreciated!
make reference can looked userid
, have return videoids
user has. there can query videos. means each time save need save in 2 spots. sort of pain, firebase recommends.
so reference more like:
videos - | - <videoid> - | - <video stuffs> | - userid videosbyuser - | - <userid> - | 0 - <videoida> | 1 - <videoidb> | - <userid2> - | 0 - <videoida>
Comments
Post a Comment