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>