firebase-sagas v0.1.16
firebase-sagas
A redux-saga integration for firebase (auth, database):
- Authentication and realtime database support
- Listen for value and child events (
value
,child_added
,child_removed
,child_changed
,child_moved
) - Snapshots as array support
- Sorting and filtering data (
orderByChild
,orderByKey
,orderByValue
,orderByPriority
,limitToLast
,limitToFirst
,startAt
,endAt
,equalTo
)
Try out the example app
Install
npm install firebase-sagas --save
Getting started
import createFirebaseSagas from 'firebase-sagas';
const config = {
apiKey: 'YOUR_API_KEY',
authDomain: 'YOUR_AUTH_DOMAIN',
databaseURL: 'YOUR_DATABASE_URL',
projectId: 'YOUR_PROJECT_ID',
storageBucket: 'YOUR_STORAGE_BUCKET',
messagingSenderId: 'YOUR_MESSAGING_SENDER_ID'
};
const firebaseSagas = createFirebaseSagas(config);
...
function* fetchDataSaga(action) {
try {
const { query } = action.payload;
const data = yield call(firebaseSagas.database.once, '/data', 'value', { query, asArray: true });
yield put(fetchDataSuccess(data));
}
catch(error) {
yield put(fetchDataFailure(error));
}
}
...
API
Modules
Classes
Functions
constants
Constants.
auth
A module for firebaseSagas.auth
- auth
- ~createUserWithEmailAndPassword(email, password) ⇒ firebase.User
- ~signInWithEmailAndPassword(email, password) ⇒ firebase.User
- ~signInAnonymously() ⇒ firebase.User
- ~signInWithCustomToken(token) ⇒ firebase.User
- ~signInWithGoogle(scopes, customParameters) ⇒ firebase.User
- ~signInWithFacebook(scopes, customParameters) ⇒ firebase.User
- ~signInWithTwitter(scopes, customParameters) ⇒ firebase.User
- ~signInWithGithub(scopes, customParameters) ⇒ firebase.User
- ~signOut()
- ~syncUser(actionCreator)
- ~createOnAuthStateChangedChannel() ⇒ eventChannel
- ~currentUser() ⇒ firebase.User
auth~createUserWithEmailAndPassword(email, password) ⇒ firebase.User
Creates a new user account associated with the specified email address and password.
Kind: inner method of auth
Returns: firebase.User - user
Param | Type |
---|---|
string | |
password | string |
auth~signInWithEmailAndPassword(email, password) ⇒ firebase.User
Signs in using an email and password.
Kind: inner method of auth
Returns: firebase.User - user
Param | Type |
---|---|
string | |
password | string |
auth~signInAnonymously() ⇒ firebase.User
Signs in as an anonymous user.
Kind: inner method of auth
Returns: firebase.User - user
auth~signInWithCustomToken(token) ⇒ firebase.User
Signs in using a custom token.
Kind: inner method of auth
Returns: firebase.User - user
Param | Type | Description |
---|---|---|
token | string | The custom token to sign in with. |
auth~signInWithGoogle(scopes, customParameters) ⇒ firebase.User
Signs in using GoogleAuthProvider.
Kind: inner method of auth
Returns: firebase.User - user
Param | Type | Description |
---|---|---|
scopes | array | Google OAuth scopes |
customParameters | object | The custom OAuth parameters to pass in the OAuth request |
auth~signInWithFacebook(scopes, customParameters) ⇒ firebase.User
Signs in using FacebookAuthProvider.
Kind: inner method of auth
Returns: firebase.User - user
Param | Type | Description |
---|---|---|
scopes | array | Facebook OAuth scopes |
customParameters | object | The custom OAuth parameters to pass in the OAuth request |
auth~signInWithTwitter(scopes, customParameters) ⇒ firebase.User
Signs in using TwitterAuthProvider.
Kind: inner method of auth
Returns: firebase.User - user
Param | Type | Description |
---|---|---|
scopes | array | Twitter OAuth scopes |
customParameters | object | The custom OAuth parameters to pass in the OAuth request |
auth~signInWithGithub(scopes, customParameters) ⇒ firebase.User
Signs in using GithubAuthProvider.
Kind: inner method of auth
Returns: firebase.User - user
Param | Type | Description |
---|---|---|
scopes | array | Github OAuth scopes |
customParameters | object | The custom OAuth parameters to pass in the OAuth request |
auth~signOut()
Signs out the current user.
Kind: inner method of auth
auth~syncUser(actionCreator)
Kind: inner method of auth
Param | Type |
---|---|
actionCreator | function |
auth~createOnAuthStateChangedChannel() ⇒ eventChannel
Creates channel that will subscribe to changes to the user's sign-in state.
Kind: inner method of auth
Returns: eventChannel - onAuthStateChangedChannel
auth~currentUser() ⇒ firebase.User
Returns the currently signed-in user (or null).
Kind: inner method of auth
Returns: firebase.User - user
database
A module for firebaseSagas.database
database~once(path, eventType, options) ⇒ * | any
Retrieve data from database just once without subscribing or listening for data changes.
Kind: inner method of database
Param | Type |
---|---|
path | string |
eventType | string |
options | object |
database~push(path, value) ⇒ * | any
Generates a new child location using a unique key and returns its Reference
Kind: inner method of database
Param | Type |
---|---|
path | string |
value |
database~update(path, values)
Writes multiple values to the Database at once.
Kind: inner method of database
Param | Type |
---|---|
path | string |
values |
database~set(path, value)
Writes data to this Database location.
Kind: inner method of database
Param | Type |
---|---|
path | string |
value |
database~remove(path)
Removes the data at this Database location.
Kind: inner method of database
Param | Type |
---|---|
path | string |
database~on(path, eventType, actionCreator, options)
Kind: inner method of database
Param | Type |
---|---|
path | string |
eventType | string |
actionCreator | function |
options | object |
database~createOnEventChannel(path, eventType) ⇒ eventChannel
Kind: inner method of database
Returns: eventChannel - onEventChannel
Param | Type |
---|---|
path | string |
eventType | string |
FirebaseSagas
FirebaseSagas
Kind: global class
firebaseSagas.database
See module database
Kind: instance property of FirebaseSagas
See: database
firebaseSagas.auth
See module auth
Kind: instance property of FirebaseSagas
See: auth
Query
Query
Kind: global class
query.equalTo(value, key)
Creates a Query that includes children that match the specified value.
Kind: instance method of Query
Param | Type | Description |
---|---|---|
value | The value to match for. The argument type depends on which orderBy() function was used in this query. Specify a value that matches the orderBy() type. When used in combination with orderByKey(), the value must be a string. | |
key | optional | The child key to start at, among the children with the previously specified priority. This argument is only allowed if ordering by child, value, or priority. |
query.startAt(value, key)
Creates a Query with the specified starting point.
Kind: instance method of Query
Param | Type | Description |
---|---|---|
value | The value to start at. The argument type depends on which orderBy() function was used in this query. Specify a value that matches the orderBy() type. When used in combination with orderByKey(), the value must be a string. | |
key | optional | The child key to start at. This argument is only allowed if ordering by child, value, or priority. |
query.endAt(value, key)
Creates a Query with the specified ending point.
Kind: instance method of Query
Param | Type | Description |
---|---|---|
value | The value to end at. The argument type depends on which orderBy() function was used in this query. Specify a value that matches the orderBy() type. When used in combination with orderByKey(), the value must be a string. | |
key | optional |
query.limitToLast(limit)
Generates a new Query object limited to the last specific number of children.
Kind: instance method of Query
Param | Description |
---|---|
limit | The maximum number of nodes to include in this query. |
query.limitToFirst(limit)
Generates a new Query limited to the first specific number of children.
Kind: instance method of Query
Param | Description |
---|---|
limit | The maximum number of nodes to include in this query. |
query.orderByValue()
Generates a new Query object ordered by value.
Kind: instance method of Query
query.orderByPriority()
Generates a new Query object ordered by priority.
Kind: instance method of Query
query.orderByChild(path)
Generates a new Query object ordered by the specified child key.
Kind: instance method of Query
Param |
---|
path |
query.orderByKey()
Generates a new Query object ordered by key.
Kind: instance method of Query
query.reset()
Resets the query
Kind: instance method of Query
query.toJSON()
Return the query as JSON-String
Kind: instance method of Query
createAuthSaga(FirebaseSagas, options) ⇒ generator
Creates a AuthSaga
Kind: global function
Returns: generator - authSaga
Param | Type |
---|---|
FirebaseSagas | FirebaseSagas |
options | object |
Example
import { createAuthSaga } from 'firebase-sagas';
...
const authSaga = createAuthSaga(firebaseSagas, {
signInMethods: [
{ type: 'signInWithEmailAndPassword' },
{ type: 'signInWithGoogle' },
],
onSignInSuccess: function* onSignInSuccess() {
yield put(push('/Todo'));
},
onSignOutSuccess: function* onSignOutSuccess() {
yield put(push('/'));
},
});
createFirebaseSagas(config) ⇒ FirebaseSagas
Creates a FirebaseSagas-Instance
Kind: global function
Returns: FirebaseSagas - firebaseSagas
Param | Type | Description |
---|---|---|
config | object | FireBase config |
Example
import createFirebaseSagas from 'firebase-sagas':
const config = {
apiKey: 'YOUR_API_KEY',
authDomain: 'YOUR_AUTH_DOMAIN',
databaseURL: 'YOUR_DATABASE_URL',
projectId: 'YOUR_PROJECT_ID',
storageBucket: 'YOUR_STORAGE_BUCKET',
messagingSenderId: 'YOUR_MESSAGING_SENDER_ID'
};
const firebaseSagas = createFirebaseSagas(config);
createQuery() ⇒ Query
Creates a new Query
Kind: global function
Returns: Query - query
Example
import { createQuery } from 'firebase-sagas';
const query = createQuery().startAt(10).endAt(15).orderByValue();
License
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago