Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit 8406397

Browse files
Firestore anytime soon? #507 (where.where)
1 parent 68a7887 commit 8406397

File tree

4 files changed

+26
-30
lines changed

4 files changed

+26
-30
lines changed

demo-ng/app/item/items.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<Button text="Set (auto id)" (tap)="firestoreSetByAutoID()" class="button"></Button>
1111
<Button text="Update" (tap)="firestoreUpdate()" class="button"></Button>
1212
<Button text="Get" (tap)="firestoreGet()" class="button"></Button>
13+
<Button text="Where" (tap)="firestoreWhere()" class="button"></Button>
1314
<Button text="Delete" (tap)="firestoreDelete()" class="button"></Button>
1415

1516
</StackLayout>

demo-ng/app/item/items.component.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class ItemsComponent implements OnInit {
6262

6363
citiesRef.doc("DC").set({
6464
name: "Washington, D.C.",
65-
state: null,
65+
state: "WA",
6666
country: "USA",
6767
capital: true,
6868
population: 680000
@@ -114,7 +114,7 @@ export class ItemsComponent implements OnInit {
114114
.catch(err => console.log("Get failed, error" + err));
115115

116116
// examples from https://firebase.google.com/docs/firestore/query-data/get-data
117-
const docRef: firestore.DocumentReference = firebase.firestore().collection("cities").doc("SF");
117+
const docRef: firestore.DocumentReference = firebase.firestore().collection("cities").doc("BJ");
118118

119119
docRef.get().then((doc: firestore.DocumentSnapshot) => {
120120
if (doc.exists) {
@@ -125,9 +125,12 @@ export class ItemsComponent implements OnInit {
125125
}).catch(function (error) {
126126
console.log("Error getting document:", error);
127127
});
128+
}
128129

130+
public firestoreWhere(): void {
129131
const query: firestore.Query = firebase.firestore().collection("cities")
130-
.where("capital", "==", true);
132+
.where("state", "==", "CA")
133+
.where("population", "<", 1000000);
131134

132135
query
133136
.get()

src/firebase.android.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2479,28 +2479,26 @@ firebase.firestore.getDocument = (collectionPath: string, documentPath: string):
24792479
});
24802480
};
24812481

2482-
firebase.firestore.where = (collectionPath: string, fieldPath: string, opStr: firestore.WhereFilterOp, value: any): firestore.Query => {
2482+
firebase.firestore.where = (collectionPath: string, fieldPath: string, opStr: firestore.WhereFilterOp, value: any, query?: com.google.firebase.firestore.Query): firestore.Query => {
24832483
try {
24842484
if (typeof(com.google.firebase.firestore) === "undefined") {
24852485
console.log("Make sure firebase-firestore is in the plugin's include.gradle");
24862486
return null;
24872487
}
24882488

24892489
const db = com.google.firebase.firestore.FirebaseFirestore.getInstance();
2490-
const colRef: com.google.firebase.firestore.CollectionReference = db.collection(collectionPath);
2491-
2492-
let query: com.google.firebase.firestore.Query;
2490+
query = query || db.collection(collectionPath);
24932491

24942492
if (opStr === "<") {
2495-
query = colRef.whereLessThan(fieldPath, firebase.toValue(value));
2493+
query = query.whereLessThan(fieldPath, firebase.toValue(value));
24962494
} else if (opStr === "<=") {
2497-
query = colRef.whereLessThanOrEqualTo(fieldPath, firebase.toValue(value));
2495+
query = query.whereLessThanOrEqualTo(fieldPath, firebase.toValue(value));
24982496
} else if (opStr === "==") {
2499-
query = colRef.whereEqualTo(fieldPath, firebase.toValue(value));
2497+
query = query.whereEqualTo(fieldPath, firebase.toValue(value));
25002498
} else if (opStr === ">=") {
2501-
query = colRef.whereGreaterThanOrEqualTo(fieldPath, firebase.toValue(value));
2499+
query = query.whereGreaterThanOrEqualTo(fieldPath, firebase.toValue(value));
25022500
} else if (opStr === ">") {
2503-
query = colRef.whereGreaterThan(fieldPath, firebase.toValue(value));
2501+
query = query.whereGreaterThan(fieldPath, firebase.toValue(value));
25042502
} else {
25052503
console.log("Illegal argument for opStr: " + opStr);
25062504
return null;
@@ -2532,11 +2530,7 @@ firebase.firestore.where = (collectionPath: string, fieldPath: string, opStr: fi
25322530
});
25332531
query.get().addOnCompleteListener(onCompleteListener);
25342532
}),
2535-
where: () => {
2536-
// TODO check web impl
2537-
console.log("in where....");
2538-
return this;
2539-
}
2533+
where: (fp: string, os: firestore.WhereFilterOp, v: any) => firebase.firestore.where(collectionPath, fp, os, v, query)
25402534
};
25412535

25422536
} catch (ex) {

src/firebase.ios.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,9 @@ firebase.toJsObject = objCObj => {
582582
case 'NSDecimalNumber':
583583
node[key] = Number(String(val));
584584
break;
585+
case 'Date':
586+
node[key] = new Date(val);
587+
break;
585588
default:
586589
console.log("Please report this at https://github.com/EddyVerbruggen/nativescript-plugin-firebase/issues: iOS toJsObject is missing a converter for class '" + types.getClass(val) + "'. Casting to String as a fallback.");
587590
node[key] = String(val);
@@ -2453,26 +2456,25 @@ firebase.firestore.getDocument = (collectionPath: string, documentPath: string):
24532456
});
24542457
};
24552458

2456-
firebase.firestore.where = (collectionPath: string, fieldPath: string, opStr: firestore.WhereFilterOp, value: any): firestore.Query => {
2459+
firebase.firestore.where = (collectionPath: string, fieldPath: string, opStr: firestore.WhereFilterOp, value: any, query?: FIRQuery): firestore.Query => {
24572460
try {
24582461
if (typeof(FIRFirestore) === "undefined") {
24592462
console.log("Make sure 'Firebase/Firestore' is in the plugin's Podfile");
24602463
return null;
24612464
}
24622465

2463-
const colRef: FIRCollectionReference = FIRFirestore.firestore().collectionWithPath(collectionPath);
2464-
let query: FIRQuery;
2466+
query = query || FIRFirestore.firestore().collectionWithPath(collectionPath);
24652467

24662468
if (opStr === "<") {
2467-
query = colRef.queryWhereFieldIsLessThan(fieldPath, value);
2469+
query = query.queryWhereFieldIsLessThan(fieldPath, value);
24682470
} else if (opStr === "<=") {
2469-
query = colRef.queryWhereFieldIsLessThanOrEqualTo(fieldPath, value);
2471+
query = query.queryWhereFieldIsLessThanOrEqualTo(fieldPath, value);
24702472
} else if (opStr === "==") {
2471-
query = colRef.queryWhereFieldIsEqualTo(fieldPath, value);
2473+
query = query.queryWhereFieldIsEqualTo(fieldPath, value);
24722474
} else if (opStr === ">=") {
2473-
query = colRef.queryWhereFieldIsGreaterThanOrEqualTo(fieldPath, value);
2475+
query = query.queryWhereFieldIsGreaterThanOrEqualTo(fieldPath, value);
24742476
} else if (opStr === ">") {
2475-
query = colRef.queryWhereFieldIsGreaterThan(fieldPath, value);
2477+
query = query.queryWhereFieldIsGreaterThan(fieldPath, value);
24762478
} else {
24772479
console.log("Illegal argument for opStr: " + opStr);
24782480
return null;
@@ -2500,11 +2502,7 @@ firebase.firestore.where = (collectionPath: string, fieldPath: string, opStr: fi
25002502
}
25012503
});
25022504
}),
2503-
where: () => {
2504-
// TODO check web impl
2505-
console.log("in where....");
2506-
return this;
2507-
}
2505+
where: (fp: string, os: firestore.WhereFilterOp, v: any) => firebase.firestore.where(collectionPath, fp, os, v, query)
25082506
};
25092507

25102508
} catch (ex) {

0 commit comments

Comments
 (0)