Skip to content

mamichels/firestore-json-utils

Repository files navigation

firestore-json-util

npm license npm license Coverage Badge

A fully typed and tested lib for working with Firestore documents. Used to parse and simplify Firestore documents for those who don't want to commit to the Firebase SDK.

Installation

npm install --save firestore-json-utils

Usage

parse

Transforms a simple JSON object into a Firestore document.

Supports all known Firestore data types expect GeoPoints and References. Those are transformed as objects / strings.

import { parse } from 'firestore-json-utils';
...
const document = parse(json);

parse example

Say, we have a simple object representing a person. a call to parse with our fictional 'person' JSON as input

{
  "id": 1701,
  "name": "Jane Doe",
  "active": true,
  "dateOfBirth": "1977-12-09T14:35:21.152Z"
}

returns the following Firestore document representation as output:

{
  "fields": {
    "id": {
      "integerValue": "1701"
    },
    "name": {
      "stringValue": "Jane Doe"
    },
    "active": {
      "booleanValue": true
    },
    "dateOfBirth": {
      "timestampValue": "1977-12-09T14:35:21.152Z"
    }
  }
}

(and yes, please ignore that dateOfBirth should be a local date rather than a timestamp, depending on how you see it...)

simplify

Transforms a Firestore document into a readable simplified JSON object.

Supports all known Firestore data types, but be cautious with multidimensional arrays.

import { simplify } from 'firestore-json-utils';
...
const json = simplify(document);

simplify example

A call to simplify with the following Firestore document (input):

{
  "fields": {
    "id": {
      "integerValue": "1701"
    },
    "name": {
      "stringValue": "Jane Doe"
    },
    "active": {
      "booleanValue": true
    },
    "dateOfBirth": {
      "timestampValue": "1977-12-09T14:35:21.152Z"
    }
  }
}

will create the following simple JSON:

{
  "id": 1701,
  "name": "Jane Doe",
  "active": true,
  "dateOfBirth": "1977-12-09T14:35:21.152Z"
}

Contributing

Just fork and submit a pull request.

License

Released under the MIT license.