firebase-database-pagination

4.0.1 • Public • Published

Firebase Database Pagination

Node.js CI

Allows pagination for the Firebase RTDB.

Usage

All the normal methods return an array of DataSnapshots.

Keys

To paginate over all the keys of a node you can use:

const pagination = require('firebase-database-pagination')
const admin = require('firebase-admin').initializeApp()

const children = await pagination.key(admin.database().ref('node'), 10)

This will fetch all children of node in batches of 10.

Value

To paginate over keys order by the nodes value you can use:

const pagination = require('firebase-database-pagination')
const admin = require('firebase-admin').initializeApp()

const children = await pagination.value(admin.database().ref('node'), 10)

Child

To paginate over all the keys of a node order by a childs key you can use:

const pagination = require('firebase-database-pagination')
const admin = require('firebase-admin').initializeApp()

const children = await pagination.child(admin.database().ref('node'), 'childKey', 10)

Transform parameter

The .key, .value and .child methods have a .transformed function property which allows each result to be converted to something else if needed.

The transformer parameter can return a value or a promised value.

const pagination = require('firebase-database-pagination')
const admin = require('firebase-admin').initializeApp()

const values = await pagination.key.transformed(admin.database().ref('node'), 10, nodeChildSnapshot => {
   return { key: nodeChildSnapshot.key, value: nodeChildSnapshot.child('count') }
})
// values is an array of { key, count }

const values = await pagination.key.transformed(admin.database().ref('node'), 10, async nodeChildSnapshot => {
   return await admin.database().ref('other').child(nodeChildSnapshot.key)
})
// values is an array of DataSnaphots pointing at /other/<nodeChildKey>

Limiting the query

All of the methods except a parameter to return a subset of values.

const pagination = require('firebase-database-pagination')
const admin = require('firebase-admin').initializeApp()

// Return all keys where the value is equal to 10
await pagination.value(admin.database().ref('node'), 10, { equalTo: 10 })

// Return all keys where the value is greater then or equal to 10
await pagination.value(admin.database().ref('node'), 10, { startAt: 10 })

// Return all keys where the value is less then or equal to 20
await pagination.value(admin.database().ref('node'), 10, { endAt: 20 })

// Return all keys where the value is greater then or equal to 15 AND less than or equal to 25 (i.e. in the interval [15, 25])
await pagination.value(admin.database().ref('node'), 10, { startAt: 15, endAt: 25 })

Readme

Keywords

none

Package Sidebar

Install

npm i firebase-database-pagination

Weekly Downloads

92

Version

4.0.1

License

ISC

Unpacked Size

13.1 kB

Total Files

5

Last publish

Collaborators

  • rhodgkins