CFCouchbase SDK
  • Introduction
  • What's New With 2.2.0
  • What's New With 2.0.0
  • About This Book
  • Authors
  • Overview
  • Installation
    • ColdBox Module
    • Traditional Apps
  • Configuration
    • Settings
    • Structure
    • Summary
  • Usage
    • Storing Documents
    • Storage Durability
    • Retrieving Documents
    • Data Serialization
    • Components
      • Auto Inflation
      • Manual Inflation
      • Custom Serialization
      • Binary
    • Custom Transformers
    • Executing Queries
      • View Queries
      • n1ql Queries
      • Query Options
      • Filter Closures
      • Transform Closures
      • Return Types
    • Managing Views
    • Working With Futures
  • Help & Support
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
Export as PDF
  1. Usage

Managing Views

PreviousReturn TypesNextWorking With Futures

Last updated 7 years ago

Was this helpful?

Views defined via JavaScript a map function that populates keys from the data in your bucket. Views can also define an additional reduce function that is used to aggregate data down, much like in SQL. Finally, one or more views live inside of a design document, which you can query and construct.

Hint Please read more about views in the Couchbase Docs at

You can manage views and design documents from the Couchbase web console and you can also manage them programatically via CFCouchbase as well. Here's a list of some useful methods for view operations:

  • designDocumentExists() - Check for the existance of a design document.

  • getDesignDocument() - Retreive a design document and all its views

  • deleteDesignDocument() - Delete a design document and all its views from the cluster

  • viewExists() - Check for the existance of a single view

  • saveView() - Save/update a view and wait for it to index

  • asyncSaveView() - Save/update a view but don't wait for it to become usable

  • deleteView() - Delete a single view from its design document

The really nice thing about saveView() and asyncSaveView() is they either insert or udpate an existing view based on whether it already exists. They also only save to the cluster if the view doesn't exist or is different. This means you can repeatedly call saveView() and nothing will happen on any call but the first. This allows you to specify the views that you need in your application when it starts up and they will only save if neccessary:

// application start
boolean function onApplicationStart(){
    application.couchbase = new cfcouchbase.CouchbaseClient( { bucketName="beer-sample" } );

    // Specify the views the applications needs here.  They will be created/updated
    // when the client is initialized if they don't already exist or are out of date.

    application.couchbase.saveView(
        'manager',
        'listBreweries',
        'function (doc, meta) {
          if ( doc.type == ''brewery'' ) {
            emit(doc.name, null);
          }
        }',
        '_count'
    );

    application.couchbase.saveView(
        'manager',
        'listBeersByBrewery',
        'function (doc, meta) {
          if ( doc.type == ''beer'' ) {
            emit(doc.brewery_id, null);
          }
        }',
        '_count'
    );

    return true;
}
http://docs.couchbase.com/couchbase-manual-2.2/#views-and-indexes