Skip to content

synergyvision/fbcache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FBCache

node version

firebase-admin node-cache moment uuid

Una librería para usar del lado del servidor que te permite implementar un almacenado en memoria caché de los datos de consultas que se hagan a rutas indicadas hacía childs en Real Time Database o colecciones de Firestore de una forma fácil y sencilla

Instalación

npm install git://github.com/synergyvision/fbcache.git#master --save

Inicialización de FBCache

import { initFBCache } from 'fbcache';
import * as config from "./fbcache.config.json";

initFBCache(config, projectURL, credentialType, credential);

fbcache.config.json, es un archivo que contendrá un objeto con las configuraciones que se le quieran dar a la librería, para conocer acerca de este archivo haz click aquí

projectURL es el URL al projecto de Firebase en donde se encuentren los childs de Real Time Database y/o las colecciones de Firestore

credentialType indica el tipo de credencial con la que se quiere autenticar a Firebase, ya sea con un token OAuth, o con un archivo de credenciales generado desde Firebase, los valores que puede recibir este método son "token" y "file"

credential es la credencial con la que se quiere autenticar a Firebase, puede recibir un string con un token OAuth, un string con la ruta al archivo de credenciales .json generado por Firebase, o directamente el objeto de dicho archivo. Para pasar el string con el token se debe a credentialType el valor "token", para el string del archivo o el objeto se debe pasar a credentialType el valor "file"

Métodos

FBCache usa una firma similar a la que implementa firebase-admin, por lo que si ya has utilizado antes esta librería te adaptaras facilmente a FBCache. Para hacer una instancia de FBCache puedes realizar lo siguiente:

import { FBCache } from 'fbcache';

let fbc = new FBCache();

ya con esta instancia puedes empezar a implementar la librería

Consulta a Real Time Database

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.database().ref(name).once();
  • Parámetros

    • name (string): Nombre del child a consultar en Real Time Database
  • Respuesta Este método retornará un objeto con las siguientes características

{
    data: Información extraida de Real Time Database,
    fromCache: Boolean que indica si se realizo la consulta con la información en caché (true) o si no (false),
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

Consulta a Firestore

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.firestore().collection(name).get();
  • Parámetros

    • name (string): Nombre de la colección a consultar en Firestore
  • Respuesta Este método retornará un objeto con las siguientes características

{
    data: Información extraida de Firestore,
    fromCache: Boolean que indica si se realizo la consulta con la información en caché (true) o si no (false),
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

Inserta datos a Real Time Database

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.database().ref(name).child(id).set(insertData);
  • Parámetros

    • name (string): Nombre del child a donde se vaya a realizar la inserción
    • insertData (object): Objeto con la información a insertar
    • id (string || number): Indica el id con el que se quiera guardar la información en Real Time Database
  • Respuesta Este método retornará un objeto con las siguientes características

{
    routeInConfig: Boolean que indica si se realizo una inserción en un child indicado en el archivo de configuración (true) o si no (false)
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

NOTA: Al usar este método se puede dar el caso de que al mismo tiempo se haga la inserción de 2 objetos con el mismo id, por lo que, una puede reescribir a la otra, para evitar esto, intente insertar usando el siguiente método:

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.database().ref().child(route).push(insertData);

Usando este método, Real Time Database asigna un ID único a la información que se esté insertando, haciendo que se evite sobreescribir la información de otro registro que se encuentre almacenado

Inserta datos a Firestore

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.firestore().collection(name).doc(id).set(insertData);
  • Parámetros

    • name (string): Nombre de la colección a donde se vaya a realizar la inserción
    • insertData (object): Objeto con la información a insertar
    • id (string || number): Indica el id con el que se quiera guardar la información en Firestore
  • Respuesta Este método retornará un objeto con las siguientes características

{
    routeInConfig: Boolean que indica si se realizo una inserción a una colección indicada en el archivo de configuración (true) o si no (false)
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

NOTA: Al usar este método se puede dar el caso de que al mismo tiempo se haga la inserción de 2 objetos con el mismo id, por lo que, una puede reescribir a la otra, para evitar esto, intente insertar usando el siguiente método:

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.firestore().collection(name).add(insertData);

Usando este método, Firestore asigna un ID único a la información que se esté insertando, haciendo que se evite sobreescribir la información de otro registro que se encuentre almacenado

Actualiza datos en Real Time Database

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.database().ref(name).child(id).update(updateData);
  • Parámetros

    • name (string): Nombre del child a donde se vaya a realizar la inserción
    • updateData (object): Objeto con la información que se quiere insertar para actualizar los registros
    • id (string || number): Indica el id con el que se quiera actualizar la información en Real Time Database
  • Respuesta: Este método retornará un objeto con las siguientes características

{
    routeInConfig: Boolean que indica si se realizo una inserción a un child indicado en el archivo de configuración (true) o si no (false)
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

Actualiza datos en Firestore

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.firestore().collection(name).doc(id).update(updateData)
  • Parámetros

    • name (string): Nombre de la colección a donde se vaya a realizar la inserción
    • updateData (object): Objeto con la información que se quiere insertar para actualizar los registros
    • id (string || number): Indica el id con el que se quiera actualizar la información en Firestore
  • Respuesta: Este método retornará un objeto con las siguientes características

{
    routeInConfig: Boolean que indica si se realizo una inserción a una colección indicada en el archivo de configuración (true) o si no (false)
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

Elimina datos en Real Time Database

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.database().ref(name).child(id).remove();
  • Parámetros

    • name (string): Nombre del child donde se realizará la eliminación
    • id (string || number): Indica el id que se quiere eliminar en Real Time Database
  • Respuesta: Este método retornará un objeto con las siguientes características

{
    routeInConfig: Boolean que indica si se realizo una eliminación a un child indicado en el archivo de configuración (true) o si no (false)
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

Elimina datos en Firestore

import { FBCache } from 'fbcache';

let fbc = new FBCache();
let resp = await fbc.firestore().collection(name).doc(id).delete();
  • Parámetros

    • name (string): Nombre de la colección donde se realizará la eliminación
    • id (string || number): Indica el id que se quiere eliminar en Firestore
  • Respuesta: Este método retornará un objeto con las siguientes características

{
    routeInConfig: Boolean que indica si se realizo una eliminación a una colección indicada en el archivo de configuración (true) o si no (false)
    updateCache: Boolean que indica si se realizo una actualización de la información en caché (true) o si no (false)
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published