@leonardvandriel/fireman
v0.0.3
Published
A wrapper around both a Firebase REST API and a local in-memory database.
Downloads
8
Maintainers
Readme
Fireman
A wrapper around both Firebase REST API and local in-memory database.
Fireman provides a unified interface to both remote Firebase database and local flame database. This allows for easy switching between the Firebase REST API in production and a local in-memory database for development and testing.
Installation
npm install @leonardvandriel/fireman
NB: Make sure you first backup your Firebase database before using Fireman. Fireman is still in alpha stage and might have some serious bugs. Also, you might just accidentally overwrite your Firebase database yourself. More information on the Firebase website and on Stack Overflow.
Usage
const fireman = require('@leonardvandriel/fireman')
// either setup fireman to use local database:
fireman.useLocalDB('database.json')
// or setup fireman to use remote database:
fireman.useRemoteDB('<app-name>', '<api-key>')
// or use local ephemeral database (in-memory):
fireman.useLocalDB(null)
fireman.localDB = { "key": "value" }
// Read user
console.log(fireman.get('/user/abcd'))
// Add user
fireman.put('/user/efgh', { name: 'Romona Moten', age: 20 })
// Query users
console.log(fireman.get('/user/abcd', { orderBy: 'age', limitToLast: 1, startAt: 10 }))
// Iterate over all users (50 per batch, 2 in parallel)
this.iterate('/user', 50, 2, user => console.log(user))
// Use multiple keys
console.log(fireman.get(['/user/abcd', '/usr/efgh']))
fireman.put(['/user/abcd', '/usr/efgh'], { name: 'Romona Moten', age: 20 })
// Reload local database from file
fireman.reload()
// Write local database to file (with pretty formatting)
fireman.save(true)
// Download remote to local database
fireman.sync()
fireman.save()
// Get all keys of object
console.log(fireman.keys('/user'))
// Get all values of object
console.log(fireman.values('/user'))
// Increment age by 10
console.log(fireman.increment('/user/abcd', { age: 10 }))
// Generate unique firebase keys
fireman.keyForNow()
fireman.keyForTimestamp(1234567890)
fireman.timestampForKey('--08_VAHXMEfyLmXTYVm')
Rules
Fireman has built-in support for managing database security and validation rules.
// Use the remote database
fireman.useRemoteDB()
// Download rules to file
fireman.syncRules()
// Show the difference between file and database
fireman.diffRules()
// Update rules from file
fireman.deployRules()
Tests
npm test
License
Fireman is licensed under the terms of the BSD 3-Clause License, see the included LICENSE file.
Authors
- Leo Vandriel
- Onno Faber