@ file : Suppress (" Member Visibility Can Be Private ", Ġ" unused ") Ċ Ċ package Ġk loud f unk tions . k loud f unk tions . firestore Ċ Ċ import Ġkotlin . js . Promise Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ 4 face Ġ( D av ide ĠG i use p pe ĠF are lla ). Ċ Ġ* Ġ@ constructor ĠA ĠQuery Ġrefers Ġto Ġa Ġquery Ġwhich Ġyou Ġcan Ġread Ġor Ġstream Ġfrom . ĠYou Ġcan Ġalso Ġconstruct Ġref ined ĠQuery Ċ Ġ* Ġobjects Ġby Ġadding Ġfilters Ġand Ġordering . Ċ Ġ* Ġ[ Google ĠDoc ]( https :// cloud . google . com / nodejs / docs / reference / firestore / 0 . 1 4 . x / Query ). Ċ Ġ*/ Ċ open Ġexternal Ġclass ĠQuery Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠFire store Ġinstance Ġfor Ġthe ĠFire store Ġdatabase Ġ( useful Ġfor Ġperforming Ġtransactions , Ġetc .). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Example ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġcollection Ref Ġ= Ġfire store . collection (' col '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġcollection Ref . add ({ foo : Ġ' bar '} ). then ( document Reference Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġlet Ġfire store Ġ= Ġdocument Reference . firestore ; ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Root Ġlocation Ġfor Ġdocument Ġis Ġ${ firestore . formatted Name }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġfire store : ĠFire store Namespace ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġthat Ġends Ġat Ġthe Ġprovided Ġset Ġof Ġfield Ġvalues Ġrelative Ġto Ġthe Ġorder Ġof ĊĠĠĠĠ Ġ* Ġthe Ġquery . ĠThe Ġorder Ġof Ġthe Ġprovided Ġvalues Ġmust Ġmatch Ġthe Ġorder Ġof Ġthe Ġorder Ġby Ġclauses Ġof Ġthe Ġquery . ĊĠĠĠĠ Ġ* Ġ@ param Ġdocument Snapshot ĠThe Ġsnapshot Ġof Ġthe Ġdocument Ġthe Ġquery Ġresults Ġshould Ġend Ġat Ġor Ġthe Ġfield Ġvalues Ġto ĊĠĠĠĠ Ġ* Ġend Ġthis Ġquery Ġat , ĊĠĠĠĠ Ġ* Ġin Ġorder Ġof Ġthe Ġquery 's Ġorder Ġby . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Query ] Ġwith Ġthe Ġnew Ġending Ġpoint . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . orderBy (' foo '). end At ( 4 2 ). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġend At ( Ġdocument Snapshot : ĠDocument Snapshot ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġend At ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġend At ( Ġfield Value : Ġdynamic Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġthat Ġends Ġbefore Ġthe Ġset Ġof Ġfield Ġvalues Ġrelative Ġto Ġthe Ġorder Ġof ĊĠĠĠĠ Ġ* Ġthe Ġquery . ĠThe Ġorder Ġof Ġthe Ġprovided Ġvalues Ġmust Ġmatch Ġthe Ġorder Ġof Ġthe Ġorder Ġby Ġclauses Ġof Ġthe Ġquery . ĊĠĠĠĠ Ġ* Ġ@ param Ġdocument Snapshot ĠThe Ġsnapshot Ġof Ġthe Ġdocument Ġthe Ġquery Ġresults Ġshould Ġend Ġbefore Ġor Ġthe Ġfield Ġvalues ĊĠĠĠĠ Ġ* Ġto Ġend Ġthis Ġquery Ġbefore , Ġin Ġorder Ġof Ġthe Ġquery 's Ġorder Ġby . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ[ Query ] Ġwith Ġthe Ġnew Ġending Ġpoint . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . orderBy (' foo '). end Before ( 4 2 ). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġend Before ( Ġdocument Snapshot : ĠDocument Snapshot ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġend Before ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġend Before ( Ġfield Value : Ġdynamic Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġthe Ġquery Ġand Ġreturns Ġthe Ġresults Ġas Ġa Ġ[ Query Snapshot ]. ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ[ Promise ] Ġcontaining Ġ[ Query Snapshot ] Ġthat Ġresolves Ġwith Ġthe Ġresults Ġof Ġthe Ġ[ Query ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '). where (' foo ', Ġ' == ', Ġ' bar '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget () Ġ: ĠPromise < Query Snapshot > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġthis Ġ[ Query ] Ġis Ġequal Ġto Ġthe Ġprovided Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ[ Boolean ] Ġtrue Ġif Ġthis Ġ[ Query ] Ġis Ġequal Ġto Ġthe Ġprovided Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Equal ( Ġother : Ġdynamic Ġ) Ġ: ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġthat 's Ġaddition ally Ġlimited Ġto Ġonly Ġreturn Ġup Ġto Ġthe Ġspecified Ġnumber ĊĠĠĠĠ Ġ* Ġof Ġdocuments . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġreturns Ġa Ġnew Ġ( immutable ) Ġinstance Ġof Ġthe ĠQuery Ġ( r ather Ġthan Ġmodify Ġthe Ġexisting Ġinstance ) ĊĠĠĠĠ Ġ* Ġto Ġimp ose Ġthe Ġlimit . ĊĠĠĠĠ Ġ* Ġ@ param Ġlimit ĠThe Ġmaximum Ġnumber Ġof Ġitems Ġto Ġreturn . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcreated Ġ[ Query ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '). where (' foo ', Ġ'>', Ġ 4 2 ); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . limit ( 1 ). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlimit ( Ġlimit : ĠInt Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġthe Ġoffset Ġof Ġthe Ġreturned Ġresults . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġreturns Ġa Ġnew Ġ( immutable ) Ġinstance Ġof Ġthe Ġ[ Query ] Ġ( r ather Ġthan Ġmodify Ġthe Ġexisting Ġinstance ) ĊĠĠĠĠ Ġ* Ġto Ġimp ose Ġthe Ġoffset . ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠThe Ġoffset Ġto Ġapply Ġto Ġthe ĠQuery Ġresults . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcreated Ġ[ Query ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '). where (' foo ', Ġ'>', Ġ 4 2 ); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . limit ( 1 0 ). offset ( 2 0 ). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġoffset ( Ġoffset : ĠInt Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĠTODO : Ġ[ onError ] ĊĠĠĠĠ Ġ* ĠAtt aches Ġa Ġlistener Ġfor ĠQuery Snapshot Ġevents . ĊĠĠĠĠ Ġ* Ġ@ param Ġon Next ĠA Ġcallback Ġto Ġbe Ġcalled Ġevery Ġtime Ġa Ġnew Ġ[ Query Snapshot ] Ġis Ġavailable . ĊĠĠĠĠ Ġ* Ġ@ param ĠonError ĠA Ġoptional Ġcallback Ġto Ġbe Ġcalled Ġif Ġthe Ġlisten Ġfails Ġor Ġis Ġcancelled . ĠNo Ġfurther ĊĠĠĠĠ Ġ* Ġcallbacks Ġwill Ġoccur . ĊĠĠĠĠ Ġ* Ġ@ return ĠAn Ġunsubscribe Ġfunction Ġthat Ġcan Ġbe Ġcalled Ġto Ġcancel Ġthe Ġsnapshot Ġlistener . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '). where (' foo ', Ġ' == ', Ġ' bar '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġlet Ġunsubscribe Ġ= Ġquery . on Snapshot ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Received Ġquery Ġsnapshot Ġof Ġsize Ġ${ query Snapshot . size }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}, Ġerr Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Encounter ed Ġerror : Ġ${ err }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ// ĠRemove Ġthis Ġlistener . ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġunsubscribe (); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Snapshot ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Next : Ġ( Query Snapshot ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonError : Ġ( Ġ( dynamic ) Ġ-> ĠUnit Ġ) ? Ġ= Ġdefined Ex tern ally ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġthat 's Ġaddition ally Ġsorted Ġby Ġthe Ġspecified Ġfield , Ġoptionally Ġin ĊĠĠĠĠ Ġ* Ġdescending Ġorder Ġinstead Ġof Ġascending . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġreturns Ġa Ġnew Ġ( immutable ) Ġinstance Ġof Ġthe ĠQuery Ġ( r ather Ġthan Ġmodify Ġthe Ġexisting Ġinstance ) ĊĠĠĠĠ Ġ* Ġto Ġimp ose Ġthe Ġfield Ġmask . ĊĠĠĠĠ Ġ* Ġ@ param Ġfield Path ĠThe Ġfield Ġto Ġsort Ġby . ĊĠĠĠĠ Ġ* Ġ@ param Ġdirection Str ĠOptional Ġdirection Ġto Ġsort Ġby Ġ(' asc ' Ġor Ġ' desc '). ĠIf Ġnot Ġspecified , Ġorder Ġwill Ġbe Ġascending . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcreated Ġ[ Query ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '). where (' foo ', Ġ'>', Ġ 4 2 ); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . orderBy (' foo ', Ġ' desc '). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠorderBy ( field Path : ĠField Path , Ġdirection Str : ĠString ? Ġ= Ġdefined Ex tern ally Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠorderBy ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠorderBy ( Ġfield Path : ĠString , Ġdirection Str : ĠString ? Ġ= Ġdefined Ex tern ally Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġinstance Ġthat Ġapplies Ġa Ġfield Ġmask Ġto Ġthe Ġresult Ġand Ġreturns Ġonly Ġthe ĊĠĠĠĠ Ġ* Ġspecified Ġsubset Ġof Ġfields . ĠYou Ġcan Ġspecify Ġa Ġlist Ġof Ġfield Ġpaths Ġto Ġreturn , Ġor Ġuse Ġan Ġempty Ġlist Ġto Ġonly ĊĠĠĠĠ Ġ* Ġreturn Ġthe Ġreferences Ġof Ġmatching Ġdocuments . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġreturns Ġa Ġnew Ġ( immutable ) Ġinstance Ġof Ġthe ĠQuery Ġ( r ather Ġthan Ġmodify Ġthe Ġexisting Ġinstance ) ĊĠĠĠĠ Ġ* Ġto Ġimp ose Ġthe Ġfield Ġmask . ĊĠĠĠĠ Ġ* Ġ@ param Ġfield Path ĠThe Ġfield Ġpaths Ġto Ġreturn . ĠValue Ġmay Ġbe Ġrepeated . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcreated Ġ[ Query ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġcollection Ref Ġ= Ġfire store . collection (' col '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġlet Ġdocument Ref Ġ= Ġcollection Ref . doc (' doc '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġreturn Ġdocument Ref . set ({ x : 1 0 , Ġy : 5 }). then (() Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġreturn Ġcollection Ref . where (' x ', Ġ'>', Ġ 5 ). select (' y '). get (); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}). then (( res ) Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġconsole . log (` y Ġis Ġ${ res . docs [ 0 ]. get (' y ') }. `); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect ( Ġvar arg Ġfield Path : ĠField Path ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġselect ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect ( Ġvar arg Ġfield Path : ĠString Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġthat Ġstarts Ġafter Ġthe Ġprovided Ġset Ġof Ġfield Ġvalues Ġrelative Ġto Ġthe Ġorder ĊĠĠĠĠ Ġ* Ġof Ġthe Ġquery . ĠThe Ġorder Ġof Ġthe Ġprovided Ġvalues Ġmust Ġmatch Ġthe Ġorder Ġof Ġthe Ġorder Ġby Ġclauses Ġof Ġthe Ġquery . ĊĠĠĠĠ Ġ* Ġ@ param Ġdocument Snapshot ĠThe Ġsnapshot Ġof Ġthe Ġdocument Ġthe Ġquery Ġresults Ġshould Ġstart Ġafter Ġor Ġthe Ġfield ĊĠĠĠĠ Ġ* Ġvalues Ġto Ġstart Ġthis Ġquery Ġafter , Ġin Ġorder Ġof Ġthe Ġquery 's Ġorder Ġby . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Query ] Ġwith Ġthe Ġnew Ġstarting Ġpoint . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . orderBy (' foo '). start After ( 4 2 ). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart After ( Ġvar arg Ġdocument Snapshot : ĠDocument Snapshot ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġstart After ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart After ( Ġvar arg Ġdocument Snapshot : Ġdynamic Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġthat Ġstarts Ġat Ġthe Ġprovided Ġset Ġof Ġfield Ġvalues Ġrelative Ġto Ġthe Ġorder ĊĠĠĠĠ Ġ* Ġof Ġthe Ġquery . ĠThe Ġorder Ġof Ġthe Ġprovided Ġvalues Ġmust Ġmatch Ġthe Ġorder Ġof Ġthe Ġorder Ġby Ġclauses Ġof Ġthe Ġquery . ĊĠĠĠĠ Ġ* Ġ@ param Ġdocument Snapshot ĠThe Ġsnapshot Ġof Ġthe Ġdocument Ġthe Ġquery Ġresults Ġshould Ġstart Ġat Ġor Ġthe Ġfield Ġvalues ĊĠĠĠĠ Ġ* Ġto Ġstart Ġthis Ġquery Ġat , Ġin Ġorder Ġof Ġthe Ġquery 's Ġorder Ġby . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Query ] Ġwith Ġthe Ġnew Ġstarting Ġpoint . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . orderBy (' foo '). start At ( 4 2 ). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart At ( Ġvar arg Ġdocument Snapshot : ĠDocument Snapshot ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġstart At ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart At ( Ġvar arg Ġdocument Snapshot : Ġdynamic Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĠTODO ĠStream ĊĠĠĠĠ Ġ* ĠExec utes Ġthe Ġquery Ġand Ġstreams Ġthe Ġresults Ġas Ġ[ Query Document Snapshot ]. ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġstream Ġof Ġ[ Query Document Snapshot ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġquery Ġ= Ġfire store . collection (' col '). where (' foo ', Ġ' == ', Ġ' bar '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġlet Ġcount Ġ= Ġ 0 ; ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġquery . stream (). on (' data ', Ġ( document Snapshot ) Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġwith Ġname Ġ'${ document Snapshot . id }' `); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ++ count ; ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}). on (' end ', Ġ() Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Total Ġcount Ġis Ġ${ count }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstream () Ġ: Ġdynamic ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġand Ġreturns Ġa Ġnew Ġ[ Query ] Ġwith Ġthe Ġadditional Ġfilter Ġthat Ġdocuments Ġmust Ġcontain Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġfield Ġand Ġthat Ġits Ġvalue Ġshould Ġsatisfy Ġthe Ġrelation Ġconstraint Ġprovided . ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġnew ĠQuery Ġthat Ġconstr ains Ġthe Ġvalue Ġof Ġa ĠDocument Ġproperty . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġreturns Ġa Ġnew Ġ( immutable ) Ġinstance Ġof Ġthe ĠQuery Ġ( r ather Ġthan Ġmodify Ġthe Ġexisting Ġinstance ) ĊĠĠĠĠ Ġ* Ġto Ġimp ose Ġthe Ġfilter . ĊĠĠĠĠ Ġ* Ġ@ param Ġfield Path ĠThe Ġname Ġof Ġa Ġproperty Ġvalue Ġto Ġcompare . ĊĠĠĠĠ Ġ* Ġ@ param Ġop Str ĠA Ġcomparison Ġoperation Ġin Ġthe Ġform Ġof Ġa Ġstring Ġ( e . g ., Ġ"< "). ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġvalue Ġto Ġwhich Ġto Ġcompare Ġthe Ġfield Ġfor Ġinclusion Ġin Ġa Ġquery . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcreated Ġ[ Query ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** JS ĠExample ** ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ> Ġlet Ġcollection Ref Ġ= Ġfire store . collection (' col '); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġcollection Ref . where (' foo ', Ġ' == ', Ġ' bar '). get (). then ( query Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġquery Snapshot . forEach ( document Snapshot Ġ=> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (` Found Ġdocument Ġat Ġ${ document Snapshot . ref . path }`); ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ}); ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwhere ( Ġfield Path : ĠField Path , Ġop Str : ĠString , Ġvalue : Ġdynamic Ġ) Ġ: ĠQuery ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġwhere ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwhere ( Ġfield Path : ĠString , Ġop Str : ĠString , Ġvalue : Ġdynamic Ġ) Ġ: ĠQuery Ċ } Ċ Ċ fun ĠQuery . where Equals ( Ġfield Path : ĠField Path , Ġvalue : Ġdynamic Ġ) Ġ= Ġwhere ( Ġfield Path , Ġ" ==", Ġvalue Ġ) Ċ Ċ fun ĠQuery . where Equals ( Ġfield Path : ĠString , Ġvalue : Ġdynamic Ġ) Ġ= Ġwhere ( Ġfield Path , Ġ" ==", Ġvalue Ġ) Ċ Ċ fun ĠQuery . where Greater Or Equals ( Ġfield Path : ĠString , Ġvalue : Ġdynamic Ġ) Ġ= Ġwhere ( Ġfield Path , Ġ"> =", Ġvalue Ġ)