UserDataStore

current-user. UserDataStore

new UserDataStore()

Source:

Represents the UserDataStore that can be interacted with. This can be used to get instances of UserDataStoreNamespace, which can be used to interact with the namespace API.

The store is a key-value store, where a namespace contains a list of keys, and a key corresponds to an arbitrary JSON-object. The store is per-user, and only the currently logged-in user has access to the namespaces.

Note that a namespace cannot exist without at least one key-value pair, for this reason you need to call set() after create() to save a namespace with a key and a value.

Examples

Getting a value with promise-syntax

import { init } from 'd2';

init({baseUrl: 'https://play.dhis2.org/demo/api'})
  .then((d2) => {
    d2.currentUser.dataStore.get('namespace').then(namespace => {
         namespace.get('key').then(value => console.log(value))
     });
  });

Creation of namespace with async-syntax

const namespace = await d2.currentUser.dataStore.create('new namespace', false);
// The namespace is not actually created on the server before 'set' is called
await namespace.set('new key', value);

Extends

Methods

(static) getUserDataStore() → {UserDataStore}

Source:

Get a new instance of the userDataStore object. This will function as a singleton - when a UserDataStore object has been created when requesting getUserDataStore again, the original version will be returned.

Returns:

Object with the userDataStore interaction properties

Type
UserDataStore

create(namespace) → {Promise.<UserDataStoreNamespace>}

Source:
Overrides:

Creates a namespace. Ensures that the namespace does not exists on the server. Note that for the namespace to be saved on the server, you need to call set.

Example

Creating a namespace

d2.currentUser.dataStore.create('new namespace').then(namespace => {
    namespace.set('new key', value);
});
Parameters:
Name Type Description
namespace string

The namespace to create.

Returns:

An instance of the current store-Namespace-instance representing the namespace that can be interacted with, or an error if namespace exists.

Type
Promise.<UserDataStoreNamespace>

delete(namespace) → {Promise}

Source:
Inherited From:

Deletes a namespace

Parameters:
Name Type Description
namespace string

The namespace to delete.

Returns:

the response body from the API.

Type
Promise

get(namespace, autoLoadopt) → {Promise.<UserDataStoreNamespace>}

Source:
Overrides:

Tries to get the given namespace from the server, and returns an instance of 'UserDataStore' that may be used to interact with this namespace. See UserDataStoreNamespace.

Example

Getting a namespace

d2.currentUser.dataStore.get('namespace').then(namespace => {
    namespace.set('new key', value);
});
Parameters:
Name Type Attributes Default Description
namespace string

Namespace to get.

autoLoad boolean <optional>
true

If true, autoloads the keys of the namespace from the server. If false, an instance of the namespace is returned without any keys (no request is sent to the server).

Returns:

An instance of a UserDataStoreNamespace representing the namespace that can be interacted with.

Type
Promise.<UserDataStoreNamespace>

getAll() → {Promise}

Source:
Inherited From:

Retrieves a list of all namespaces on the server.

Returns:

An array of namespaces.

Type
Promise

has(namespace) → {Promise.<boolean>}

Source:
Inherited From:

Convenience method to check if a namespace exists on the server.

Parameters:
Name Type Description
namespace string

Namespace to check.

Returns:

True if namespace exists, false otherwise.

Type
Promise.<boolean>