gstore-node
v8.x
v8.x
  • Introduction
  • Getting Started
    • Motivation
    • Installation
    • Create a gstore instance
  • Schema
    • About
    • Type validation
    • Value validation
    • Additional properties settings
    • Schema options
    • Joi Schema
    • Methods
      • path()
      • virtual()
    • Custom methods
  • Model
    • Creation
    • Methods
      • GET
      • UPDATE
      • DELETE
      • excludeFromIndexes()
      • key()
      • sanitize()
      • clearCache()
  • Entity
    • Creation
    • Properties
    • Methods
      • SAVE
      • plain()
      • populate()
      • model()
      • datastoreEntity()
      • validate()
  • Queries
    • @google-cloud Query
    • list()
    • findOne()
    • deleteAll()
    • findAround()
  • Populate
  • Middleware (hooks)
    • About
    • Pre hooks
    • Post hooks
  • Cache / Dataloader
    • Dataloader
    • Cache
  • gstore Methods
    • save()
  • Typescript
  • Appendix
    • Error Codes
    • Credits
Powered by GitBook
On this page
  • Instantiate
  • Configuration
  • cache
  • errorOnEntityNotFound
  • Connect the Google Cloud Node library
  • Aliases
  • Instances

Was this helpful?

  1. Getting Started

Create a gstore instance

PreviousInstallationNextSchema

Last updated 5 years ago

Was this helpful?

Instantiate

In order to get a gstore instance, import the module and create a new instance with an optional configuration object.

const { Gstore } = require('gstore-node');
const gstore = new Gstore(/*optional*/<config>);

Configuration

Optionally you can provide a configuration object when creating the instance with the following properties:

cache

Refer to for a detail explanation of the cache configuration.

const { Gstore } = require('gstore-node');
const gstore = new Gstore({ cache: true });

errorOnEntityNotFound

Boolean (default: true)

By default if you fetch an entity by Key and the entity is not found in the Datastore, gstore will throw an "ERR_ENTITY_NOT_FOUND" error. If you prefer to have null returned when an entity is not found, set errorOnEntityNotFound to false.

const { Gstore } = require('gstore-node');
const gstore = new Gstore({ errorOnEntityNotFound: false });

Connect the Google Cloud Node library

const { Datastore } = require('@google-cloud/datastore');
const { Gstore } = require('gstore-node');

const gstore = new Gstore();
const datastore = new Datastore();

gstore.connect(datastore);

Aliases

After connecting gstore to the datastore, the gstore instance has 2 aliases set up

  • gstore.ds The underlying @google/datastore instance. This allows you to access the complete API of the Datastore client whenever needed.

  • gstore.transaction. Alias of the same google-cloud/datastore method.

Instances

Each time you call const gstore = new Gstore() you create a new instance. This means that you are responsible to cache that instance to be able to retrieve it in different places of your application. One way to do that is to initialise gstore in a separate file and require the instance from there.

// db.js
const { Gstore } = require('gstore-node');
const gstore = new Gstore();

module.exports = { gstore };
// You can then access the same instance anywhere in your application with
const { gstore } = require('./db');

Another way is to use gstore instances to save and retrieve gstore instances.

// server.js
const { Gstore, instances } = require('gstore-node');
const { Datastore } = require('@google-cloud/datastore');

const gstore1 = new Gstore();
const gstore2 = new Gstore({ cache: true }); // instance with cache turned "on"
const gstore3 = new Gstore(); // instance that we will connect to a different Datastore "namespace"

const datastore1 = new Datastore({ namespace: 'dev' });
const datastore2 = new Datastore({ namespace: 'staging' });

gstore1.connect(datastore1);
gstore2.connect(datastore1);
gstore3.connect(datastore2); // different namespace

// Give a unique ID to each instance
instances.set('default', gstore1);
instances.set('cache-on', gstore2);
instances.set('staging', gstore3);

...

// You can access the gstore instances anywhere in your application
const { instances } = require('gstore-node');

const gstoreDefaultInstance = instances.get('default');
// or
const gstoreWithCache = instances.get('cache-on');
// or
const gstoreStaging = instances.get('staging');

For all the information on how to configure and instantiate the Datastore client, .

the cache documentation
read the docs here