Awesome
<p align="center"> <img height="75px" width="411px" src="https://raw.githubusercontent.com/davideast/Querybase/master/logos/logo-large.png"> <p align="center">Bringing the <code>.where()</code> statement to the Firebase Database</p> </p>Querybase is in an experiment and not for production apps/sites/anything.
Cloud Firestore makes this library irrelevant as it has much more complex querying.
What is Querybase?
- .where() - Find records by up to three fields.
- No client-side filtering - Querybase genererates composite keys to provide querying on multiple fields.
- Simple Query API - Use common query methods such as
.greaterThan()
,.lessThan()
, and.startsWith()
. - Lightweight - 1.87 kB (gzipped)
Install
npm install querybase --save
Use via unpkg
<script src="https://unpkg.com/querybase@0.6.0"></script>
Example usage
Querybase takes a Firebase Database reference with a list of fields to create composite keys. You can only use up to three fields. Any more would create a crazy amount of composite keys in the database.
Querying using multiple fields
const databaseRef = firebase.database().ref().child('people');
const querybaseRef = querybase.ref(databaseRef, ['name', 'age', 'location']);
// Automatically handles composite keys
querybaseRef.push({
name: 'David',
age: 27,
location: 'SF'
});
// Find records by multiple fields
// returns a Firebase Database ref
const queriedDbRef = querybaseRef
.where({
name: 'David',
age: 27
});
// Listen for realtime updates
queriedDbRef.on('value', snap => console.log(snap));
Querying using one field
Querybase also provides rich querying methods for single fields.
const databaseRef = firebase.database.ref().child('people');
const querybaseRef = querybase.ref(databaseRef, []);
// Querybase for single criteria, returns a Firebase Ref
querybaseRef.where({ name: 'David'});
// Querybase for a single string criteria, returns
// a QuerybaseQuery, which returns a Firebase Ref
querybaseRef.where('name').startsWith('Da');
querybaseRef.where('age').lessThan(30);
querybaseRef.where('age').greaterThan(20);
querybaseRef.where('age').between(20, 30);