PrivMX DOCS
JavaScript

KVDB Entries

Setting Entries in KVDB.

About Entries

The structure of an entry and a brief description of its elements is outlined in the following table:

FieldTypeEncryptedDescription
databinaryyescontent of the entry
infoServerKvdbEntryInfonoadditional information assigned by the server e.g. author, creationDate, key and kvdbID
privateMetabinaryyesadditional information about the entry
publicMetabinarynoadditional public information about the entry, also accessible through PrivMX Bridge API

Define Structure

KVDB's architecture does not require you to use a specific data structure inside the entry. So before working with KVDBs, define what what kind of entries you want to send.

We recommend future-proofing your entries right from the start, i.e. choosing an easily modifiable format.

It is also a good idea to include its type and version in the structure of the entries.

Here is an example entries structure that you can use in your project.

JSON
{
   “data”:{
     “content”: "string", // string / binary data containing for example: markdown, html or json
   },
   “info”: "ServerKvdbEntryInfo", // assigned by server,
   “publicMeta”:{
     “version”:number,
     “type”: “text”, // some kind of enum describing type of entry like “event”, “html”, “markdown” etc.
   },
   “privateMeta”:{
     // meta fields
   }
}

Remember that it is only an example and you should consider your app's requirements and limitations.

Sample code on this page is based on the initial assumptions.

Creating or Updating an Entry

To create or update an entry in the given KVDB, you need to use the setEntry(...) method:

JavaScript

// creating/updating entry to the KVDB represented by its kvdbId,
// When you create entry ENTRY_VERSION must be set to 0. When updating it myst be set to current version of given entry
await kvdbApi.setEntry(
    kvdbId, 
    "entry_key",
    this.strToUint8("some public meta-data"), 
    this.strToUint8("some private meta-data"), 
    this.strToUint8("entry_data"),
    ENTRY_VERSION 
);

Listing All Keys in a KVDB

To get a list of entry keys inside a KVDB, use listEntriesKeys method. Reading the entry keys of the KVDB (limited to the 100 newest entries as described by the PagingQuery object):

JavaScript
const defaultListQuery = {skip: 50, limit: 20, sortOrder: "desc"};
const entriesKeys = await kvdbApi.listEntriesKeys(
    kvdbId,
    defaultListQuery
);
for (const key of entriesKeys.readItems) {
    console.log("KVDB entry key: ", key);
}

Listing All Entries in a KVDB

To get a list of entry keys inside a KVDB, use listEntries method. Reading the entry keys of the KVDB (limited to the 100 newest entries as described by the PagingQuery object):

JavaScript
const defaultListQuery = {skip: 50, limit: 20, sortOrder: "desc"};
const entries = await kvdbApi.listEntries(
    kvdbId,
    defaultListQuery
);
for (const entry of entries.readItems) {
    console.log("KVDB entry key: ", entry.info.key);
}

Getting an Entry from KVDB

To get an entry from a KVDB, use getEntry method.

JavaScript
const entry = await kvdbApi.getEntry(
    kvdbId,
    entryKey
);

Modifying Entries

Depending on your project's specification, it may be necessary to modify an entry. It could be e.g. changing entry data, publicMeta, privateMeta. Each user with management rights is able to modify and delete entries.

Updating an entry means overwriting it with the provided data. To successfully update an entry, you must be entry creator or KVDB moderator.

Below there is an example of modifying an entry:

JavaScript
const entry = await kvdbApi.getEntry(
    kvdbId, 
    entryKey
); 
await kvdbApi.setEntry(
    entry.info.kvdbId,
    entry.info.key,
    this.strToUint8("some new entry public meta-data"), 
    this.strToUint8("some new entry private meta-data"), 
    this.strToUint8("entry new data")
    entry.version
);

Deleting an Entry from KVDB

To delete an entry, use the deleteEntry(...) method.

JavaScript
await kvdbApi.deleteEntry(
    kvdbId,
    entryKey
);

We use cookies on our website. We use them to ensure proper functioning of the site and, if you agree, for purposes such as analytics, marketing, and targeting ads.

On this page

KVDB Entries | PrivMX Docs