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
  • CustomUser.cfc
  • Usage

Was this helpful?

Edit on GitHub
Export as PDF
  1. Usage
  2. Components

Custom Serialization

If you really want to get extra funky and control how your components are serialized, you can fall back on our conventions. If the CFC has a public method called $serialize(), it will be called and its output (must be a string) will be saved in Couchbase. The CFC can also have a public method called $deserialize( id, data ), that if declared will be called and given the data so it can populate itself.

CustomUser.cfc

// CustomUser is an object that implements its own serialization scheme
// using pipe-delimited lists to store the data instead of JSON.  It has both
// a $serialize() and $deserialize() method to facilitate that.
component accessors="true"{

    property name="firstName";
    property name="lastName";
    property name="age";

    function $serialize(){
        // Serialize as pipe-delimited list
        return '#getFirstName()#|#getLastName()#|#getAge()#';
    }

    function $deserialize( ID, data ){
        // Deserialize the pipe-delimited list
        setFirstName( listGetAt( data, 1, '|' ) );
        setLastName( listGetAt( data, 2, '|' ) );
        setAge( listGetAt( data, 3, '|' ) );        
    }
}

Usage

user = new CustomUser();
user.setFirstName( "Brad" );
user.setLastName( "Wood" );
user.setAge( 45 );

couchbase.upsert( 'half-pipe', user );

reinflatedUser = couchbase.get( id="half-pipe", inflateTo='CustomUser' );

writeOutput( reinflatedUser.getFirstName() );
writeOutput( reinflatedUser.getLastName() );
writeOutput( reinflatedUser.getAge() );
PreviousManual InflationNextBinary

Last updated 7 years ago

Was this helpful?