@@ -36,6 +36,9 @@ export type QueryJSON = {
36
36
order ? : string ;
37
37
className ? : string ;
38
38
count ? : number ;
39
+ readPreference ? : string ;
40
+ includeReadPreference ? : string ;
41
+ subqueryReadPreference ? : string ;
39
42
} ;
40
43
41
44
/**
@@ -220,6 +223,9 @@ class ParseQuery {
220
223
_limit : number ;
221
224
_skip : number ;
222
225
_order : Array < string > ;
226
+ _readPreference : string ;
227
+ _includeReadPreference : string ;
228
+ _subqueryReadPreference : string ;
223
229
_queriesLocalDatastore : boolean ;
224
230
_localDatastorePinName : any ;
225
231
_extraOptions : { [ key : string ] : mixed } ;
@@ -253,6 +259,9 @@ class ParseQuery {
253
259
this . _include = [ ] ;
254
260
this . _limit = - 1 ; // negative limit is not sent in the server request
255
261
this . _skip = 0 ;
262
+ this . _readPreference = null ;
263
+ this . _includeReadPreference = null ;
264
+ this . _subqueryReadPreference = null ;
256
265
this . _queriesLocalDatastore = false ;
257
266
this . _localDatastorePinName = null ;
258
267
this . _extraOptions = { } ;
@@ -391,6 +400,15 @@ class ParseQuery {
391
400
if ( this . _order ) {
392
401
params . order = this . _order . join ( ',' ) ;
393
402
}
403
+ if ( this . _readPreference ) {
404
+ params . readPreference = this . _readPreference ;
405
+ }
406
+ if ( this . _includeReadPreference ) {
407
+ params . includeReadPreference = this . _includeReadPreference ;
408
+ }
409
+ if ( this . _subqueryReadPreference ) {
410
+ params . subqueryReadPreference = this . _subqueryReadPreference ;
411
+ }
394
412
for ( const key in this . _extraOptions ) {
395
413
params [ key ] = this . _extraOptions [ key ] ;
396
414
}
@@ -444,9 +462,21 @@ class ParseQuery {
444
462
this . _order = json . order . split ( "," ) ;
445
463
}
446
464
465
+ if ( json . readPreference ) {
466
+ this . _readPreference = json . readPreference ;
467
+ }
468
+
469
+ if ( json . includeReadPreference ) {
470
+ this . _includeReadPreference = json . includeReadPreference ;
471
+ }
472
+
473
+ if ( json . subqueryReadPreference ) {
474
+ this . _subqueryReadPreference = json . subqueryReadPreference ;
475
+ }
476
+
447
477
for ( const key in json ) {
448
478
if ( json . hasOwnProperty ( key ) ) {
449
- if ( [ "where" , "include" , "keys" , "limit" , "skip" , "order" ] . indexOf ( key ) === - 1 ) {
479
+ if ( [ "where" , "include" , "keys" , "limit" , "skip" , "order" , "readPreference" , "includeReadPreference" , "subqueryReadPreference" ] . indexOf ( key ) === - 1 ) {
450
480
this . _extraOptions [ key ] = json [ key ] ;
451
481
}
452
482
}
@@ -1482,6 +1512,20 @@ class ParseQuery {
1482
1512
return this ;
1483
1513
}
1484
1514
1515
+ /**
1516
+ * Changes the read preference that the backend will use when performing the query to the database.
1517
+ * @param {String } readPreference The read preference for the main query.
1518
+ * @param {String } includeReadPreference The read preference for the queries to include pointers.
1519
+ * @param {String } subqueryReadPreference The read preference for the sub queries.
1520
+ * @return {Parse.Query } Returns the query, so you can chain this call.
1521
+ */
1522
+ readPreference ( readPreference : string , includeReadPreference ? : string , subqueryReadPreference ? : string ) : ParseQuery {
1523
+ this . _readPreference = readPreference ;
1524
+ this . _includeReadPreference = includeReadPreference ;
1525
+ this . _subqueryReadPreference = subqueryReadPreference ;
1526
+ return this ;
1527
+ }
1528
+
1485
1529
/**
1486
1530
* Subscribe this query to get liveQuery updates
1487
1531
*
0 commit comments