@baymose/gatsby-source-rehabpath
v1.0.2
Published
A plugin for pulling in data for RehabPath websites.
Downloads
7
Maintainers
Readme
gatsby-source-firestore
Gatsby source plugin for building websites using Firebase Firestore as a data source
Usage
Generate and download a Firebase Admin SDK private key by accessing the Firebase Project Console > Settings > Service Accounts
Rename and put the downloaded
.json
crendtial file somewhere in the GatsbyJS project (e.g../credentials.json
)Add
gatsby-source-firestore
as a dependency by running usingnpm
oryarn
:npm i gatsby-source-firestore # or yarn add gatsby-source-firestore
Configure settings at
gatsby-config.js
, for example:module.exports = { plugins: [ { resolve: `gatsby-source-firestore`, options: { // credential or appConfig credential: require(`./credentials.json`), appConfig: { apiKey: "api-key", authDomain: "project-id.firebaseapp.com", databaseURL: "https://project-id.firebaseio.com", projectId: "project-id", storageBucket: "project-id.appspot.com", messagingSenderId: "sender-id", appID: "app-id", }, types: [ { type: `Book`, collection: `books`, map: doc => ({ title: doc.title, isbn: doc.isbn, author___NODE: doc.author.id, }), }, { type: `Author`, collection: `authors`, map: doc => ({ name: doc.name, country: doc.country, books___NODE: doc.books.map(book => book.id), }), }, ], }, }, ], }
Note that you will need to have
books
andauthors
in Firestore matching this schema before Gatsby can query correctly, e.gbooks__NODE
onauthor
needs to be an array withbooks
as a key of reference types tobook
documents.Test GraphQL query:
{ allBooks { edges { node { title isbn author { name } } } } }
Configurations
| Key | Description |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| credential
| Credential configurations from downloaded private key |
| types
| Array of types, which require the following keys (type
, collection
, map
) |
| types.type
| The type of the collection, which will be used in GraphQL queries, e.g. when type = Book
, the GraphQL types are named book
and allBook
|
| types.collection
| The name of the collections in Firestore. Nested collections are not tested |
| types.map
| A function to map your data in Firestore to Gatsby nodes, utilize the undocumented ___NODE
to link between nodes |
Disclaimer
This project is created solely to suit our requirements, no maintenance or warranty are provided. Feel free to send in pull requests.