# CouchBase

NativeScript CouchBase on NPM NativeScript CouchBase on NPM follow on Twitter

Android Device Android Emulator iOS Device iOS Simulator

Couchbase Lite (opens new window) is an embedded, NoSQL JSON Document Style database for your mobile apps.

You can use Couchbase Lite as a standalone embedded database within your mobile apps, or with Sync Gateway (opens new window) and Couchbase Server (opens new window) to provide a complete cloud to edge synchronized solution

# Android

Note

The minimum required SDK is version 22 (Lollipop 🍭)

TIP

Include the following in the android {} section of you app.gradle:

android {
    // Set minimum JVM level to ensure availability of, for example, lambda expressions
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

# iOS

Note

The minimum required platform is version 10

# Installing

    ns plugin add @triniwiz/nativescript-couchbase

# Usage

import { CouchBase, ConcurrencyMode } from '@triniwiz/nativescript-couchbase';
const database = new CouchBase('my-database');

const documentId = database.createDocument({
	firstname: 'O',
	lastname: 'Fortune',
	address: {
		country: 'Trinidad and Tobago',
	},
	twitter: 'https://www.twitter.com/triniwiz',
});

const person = database.getDocument(documentId);

database.updateDocument(documentId, {
	firstname: 'Osei',
	lastname: 'Fortune',
	twitter: 'https://www.twitter.com/triniwiz',
});

// Default concurrency mode is FailOnConflict if you don't pass it
const isDeleted = database.deleteDocument(documentId, ConcurrencyMode.FailOnConflict);

# Synchronization with Couchbase Sync Gateway and Couchbase Server

import { CouchBase } from '@triniwiz/nativescript-couchbase';
const database = new CouchBase('my-database');

const push = database.createPushReplication('ws://sync-gateway-host:4984/my-database');
push.setUserNameAndPassword('user', 'password');
const pull = database.createPullReplication('ws://sync-gateway-host:4984/my-database');
pull.setSessionId('SomeId');
pull.setSessionIdAndCookieName('SomeId', 'SomeCookieName');

push.setContinuous(true);
pull.setContinuous(true);
push.start();
pull.start();

# Listening for Changes

# Datebase

database.addDatabaseChangeListener(function (changes) {
	for (var i = 0; i < changes.length; i++) {
		const documentId = changes[i];
		console.log(documentId);
	}
});

# Document

database.addDocumentChangeListener('document-id-to-watch', function (documentId) {
	console.log(documentId);
});

# Query

const results = database.query({
	select: [], // Leave empty to query for all
	from: 'otherDatabaseName', // Omit or set null to use current db
	where: [{ property: 'firstName', comparison: 'equalTo', value: 'Osei' }],
	order: [{ property: 'firstName', direction: 'desc' }],
	limit: 2,
});

# Transactions

Using the method inBatch to run group of database operations in a batch/transaction. Use this when performing bulk write operations like multiple inserts/updates; it saves the overhead of multiple database commits, greatly improving performance.

import { CouchBase } from '@triniwiz/nativescript-couchbase';
const database = new CouchBase('my-database');

database.inBatch(() => {
    const documentId = database.createDocument({
        "firstname": "O",
        "lastname": "Fortune",
        "address": {
            "country": "Trinidad and Tobago"
        }
        "twitter": "https://www.twitter.com/triniwiz"
    });

    const person = database.getDocument(documentId);


    database.updateDocument(documentId, {
        "firstname": "Osei",
        "lastname": "Fortune",
        "twitter": "https://www.twitter.com/triniwiz"
    });

    const isDeleted = database.deleteDocument(documentId);
});

# API

# CouchBase(...)

new CouchBase('nsDB');

Creates or opens a database

Param Type
name string

Returns: CouchBase


# close()

 close(): void;

Closes the currently opened database


# createDocument(...)

 createDocument(data: Object, documentId?: string, concurrencyMode?: ConcurrencyMode): string;

Creates a new document

Param Type
data Object
documentId string
concurrencyMode ConcurrencyMode

Returns: string


# setBlob(...)

 setBlob(id: string, name: string, blob: any, mimeType?: string, concurrencyMode?: ConcurrencyMode): void;
Param Type
id string
name string
blob any
mimeType string
concurrencyMode ConcurrencyMode

Adds a blob to a document


# getBlob(...)

 getBlob(id: string, name: string): Blob;
Param Type
id string
name string

Gets a blob from a document

Returns: Blob


# getDocument(...)

 getDocument(documentId: string): Object;
Param Type
documentId string

Gets a document

Return: Object


# getDocuments(...)

 getDocuments(documentIds: string[]): Object[];
Param Type
documentIds string[]

Get a list of documents by id

Return: Object[]


# updateDocument(...)

 updateDocument(documentId: string, data: Object, concurrencyMode?: ConcurrencyMode): void;
Param Type
documentId string
data Object
concurrencyMode ConcurrencyMode

Updates a document

Return: Boolean


# deleteDocument(...)

 deleteDocument(documentId: string, concurrencyMode?: ConcurrencyMode): void;
Param Type
documentId string
data ConcurrencyMode

Deletes a document

Return: Boolean


# destroyDatabase(...)

 destroyDatabase(): void;

Destroys the currently opened database


# query(...)

 query(query?: Query): Array<Object>;
Param Type
query Query

Queries the currently opened database

Returns: Array<Object>


# createReplication(...)

 createReplication(remoteUrl: string, direction: 'push' | 'pull' | 'both'): Replicator;
Param Type
remoteUrl string
direction 'push' | 'pull' | 'both'

Creates a replicator which can be used later on to sync updates with a remote database

Returns: Replicator


# createPullReplication(...)

 createPullReplication(remoteUrl: string, username?: string, password?: string): Replicator;
Param Type
remoteUrl string
username string
password string

Creates a pull replicator which can be used later on to sync updates with a remote database

Returns: Replicator


# createPushReplication(...)

 createPushReplication(remoteUrl: string, username?: string, password?: string): Replicator;
Param Type
remoteUrl string
username string
password string

Creates a push replicator which can be used later on to sync updates with a remote database

Returns: Replicator


# addDatabaseChangeListener(...)

 addDatabaseChangeListener(callback: (ids: string[]) => void): void;
Param Type
callback (ids: string[]) => void

Adds a database change listener


# removeDatabaseChangeListener(...)

  removeDatabaseChangeListener(callback: (ids: string[]) => void): void;
Param Type
callback (ids: string[]) => void

Removes a database change listener


# addDocumentChangeListener(...)

 addDocumentChangeListener(documentId: string, callback: (id: string) => void): void;
Param Type
callback (documentId: string, id: string) => void

Adds a document change listener


# removeDocumentChangeListener(...)

  removeDocumentChangeListener(callback: (id: string) => void): void;
Param Type
callback (id: string) => void

Removes a document change listener


# inBatch(...)

 inBatch(batch: () => void): void;
Param Type
batch Function

Runs a group of operations in a batch. Use this when performing bulk write operations like multiple create/update; it saves the overhead of multiple database commits, greatly improving performance.


# Classes

# Replicator

Method Type
start() void
stop() void
isRunning() boolean
setContinuous(isContinuous: boolean) void
setUserNameAndPassword(username: string, password: string) void
setChannels(channels: string[]) void
setSessionIdAndCookieName(sessionId: string, cookieName: string) void
setSessionId(sessionId: string) void

# Blob

Prop Type
ios any
android any
content any
contentStream any
contentType any
length number
digest string
properties Map<string, any>

# Interfaces

# Query

Prop Type
select any[]
where QueryWhereItem[]
groupBy any
order QueryOrderItem[]
limit any
offset any
from string

# QueryWhereItem

Prop Type
logical QueryLogicalOperator
property string
comparison QueryComparisonOperator
value any

# QueryOrderItem

Prop Type
property string
direction 'asc'

# Enums

# QueryMeta

Members Value
ALL "COUCHBASE_ALL"
ID "COUCHBASE_ID"

# QueryLogicalOperator

Members Value
AND "and"
OR "or"

# QueryArrayOperator

Members Value
CONTAINS "contains"

# ConcurrencyMode

Members Value Description
LastWriteWins 0 (default) The last operation wins if there is a conflict.
FailOnConflict 1 The operation will fail if there is a conflict.

# Types

# QueryComparisonOperator

"modulo" |
"is" |
"between" |
"isNot" |
"collate" |
"in" |
"add" |
"isNullOrMissing" |
"greaterThan" |
"divide" |
"notEqualTo" |
"like" |
"subtract" |
"lessThanOrEqualTo" |
"lessThan" |
"notNullOrMissing" |
"regex" |
"equalTo" |
"multiply";
Last Updated: 3/6/2021, 4:43:12 AM