Blog>
Snippets

Efficient Indexing with Couchbase in Angular Service

Demonstrate how to create and use efficient indexing in Couchbase through an Angular service to speed up queries.
import { Injectable } from '@angular/core';
import { Couchbase } from 'ngx-couchbase';

@Injectable({
  providedIn: 'root'
})
export class CouchbaseService {
  private bucket: any;

  constructor() {
    // Initialize Couchbase connection
    this.bucket = new Couchbase('bucket_name');
  }

  createIndex() {
    // Define a N1QL primary index on the bucket for improved performance
    this.bucket.query('CREATE PRIMARY INDEX ON `bucket_name`',
    function (err, result) {
      if (err) {
        console.error('Index creation failed', err);
        return;
      }
      console.log('Index created successfully', result);
    });
  }

  // Function to execute a query using the index
  executeQuery(queryStr: string) {
    return new Promise((resolve, reject) => {
      this.bucket.query(queryStr, function(err, rows, meta) {
        if (err) {
          reject(err);
        } else {
          resolve(rows);
        }
      });
    });
  }
}
This Angular service includes methods for creating a primary index and executing queries using the Couchbase SDK. The 'createIndex()' method initializes a primary index to enhance query performance. The 'executeQuery(queryStr: string)' method runs a N1QL query string against the Couchbase server and returns a promise that resolves with the query results.