querybase

Bringing the where statement to Firebase

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
querybase
0.6.07 years ago8 years agoMinified + gzip package size for querybase in KB

Readme

Bringing the .where() statement to the Firebase Database


Build Status Coverage Status

Querybase is in an experiment and not for production apps/sites/anything.

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().

Install

npm install querybase --save

Use via unpkg
<script src="https://unpkg.com/querybase@0.4.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

```js 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. ```js const databaseRef = firebase.database.ref().child('people'); const querybaseRef = querybase.query(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); ```