SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Better Data Management
       with TaffyDB

       taffydb.com
Who here considered
 themselves a JavaScript
Programmer 5 years ago?
Three Types of JavaScript Developer
Three Types of JavaScript Developer
Three Types of JavaScript Developer
Three Types of JavaScript Developer
Three Types of JavaScript Developer
Three Types of JavaScript Developer
It all started with arrays
It all started with arrays

var todos = [
    [quot;Home To Dosquot;,1,false,[
       [quot;Replace light bulbsquot;,false,quot;Ianquot;],
       [quot;Clean out deskquot;,false,quot;Ianquot;]]
    ],
    [quot;Work To Dosquot;,0,true,[
       [quot;Fix bug with formquot;,false,quot;Ianquot;],
       [quot;Draft requirements docquot;,false,quot;Ianquot;],
       [quot;Learn JavaScript Objectsquot;,false,quot;Ianquot;]]
    ]
];
It all started with arrays

var todos = [
     [quot;Home To Dosquot;,1,false,[
        [quot;Replace light bulbsquot;,false,quot;Ianquot;],
        [quot;Clean out deskquot;,false,quot;Ianquot;]]
     ],
     [quot;Work To Dosquot;,0,true,[
        [quot;Fix bug with formquot;,false,quot;Ianquot;],
        [quot;Draft requirements docquot;,false,quot;Ianquot;],
        [quot;Learn JavaScript Objectsquot;,false,quot;Ianquot;]]
     ]
];
// update Fix bug with form to complete
todos[1][3][0][1] = true;
Functions like this

function checkTask (list,task) {
   for(var li = 0;li<todos;li++) {
      if (todos[li][0] == list) {
          for (var ta = 0; ta < todos[li][3]; ta++) {
             if (todos[li][3][ta][0] == task) {
                 todos[li][3][ta][1] == true;
             }
          }
      }
   }
}
checkTask(quot;Work To Dosquot;,quot;Draft requirements docquot;);
JavaScript Object Literals




                   {}
JavaScript Object Literals

Useful for storing related name value pairs:

     {country:quot;United Statesquot;,
     government:quot;Democracyquot;,
     president:quot;Barrak Obamaquot;}
JavaScript Object Literals

Useful for storing related name value pairs:

     {country:quot;United Statesquot;,
     government:quot;Democracyquot;,
     president:quot;Barrak Obamaquot;}

Also useful for composing instructions for functions:

find({government:quot;Democracyquot;})
// find all records where government == Democracy
This is TaffyDB
This is TaffyDB

• A wrapper for object literals (records)
This is TaffyDB

• A wrapper for object literals (records)
• Provides a JavaScript centric API (using arrays/objects)
This is TaffyDB

• A wrapper for object literals (records)
• Provides a JavaScript centric API (using arrays/objects)
• Uses familiar database concepts
This is TaffyDB

•   A wrapper for object literals (records)
•   Provides a JavaScript centric API (using arrays/objects)
•   Uses familiar database concepts
•   But it isn't a DB - no persistence
This is TaffyDB

•   A wrapper for object literals (records)
•   Provides a JavaScript centric API (using arrays/objects)
•   Uses familiar database concepts
•   But it isn't a DB - no persistence

•   Thin (under 12K)
•   Opensource and Free
•   Maintained (v1.7.1)
•   One global object, no prototype modification
Create a data collection


// create a populated data collection
var jsConfSpeakers = TAFFY([
    {quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;},
    {quot;namequot;:quot;Francisco Tolmaskquot;,quot;topicquot;:quot;Objective-Jquot;},
    {quot;namequot;:quot;Chris Andersonquot;,quot;topicquot;:quot;CouchDBquot;},
    {quot;namequot;:quot;Jeff Hayniequot;,quot;topicquot;:quot;Web Apps on the Desktopquot;},
    {quot;namequot;:quot;Stoyan Stefanovquot;,quot;topicquot;:quot;Kick Ass Web Appsquot;}
]);
Insert




jsConfSpeakers.insert(
   {quot;namequot;:quot;Richard D. Worthquot;,quot;topicquot;:quot;jQuery UIquot;}
 );
Getting records


jsConfSpeakers.first();
// returns {quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;}
Getting records


jsConfSpeakers.first();
// returns {quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;}
// TaffyDB filtering is overloaded
// 0 and [0] will both return the first record

jsConfSpeakers.get(0);
jsConfSpeakers.get([0]);
// returns [{quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;}]
Remove

// delete is a reserved word
// use remove function instead

jsConfSpeakers.remove(0);
Update


jsConfSpeakers.update({quot;topicquot;:quot;TBDquot;},0);
// updates the first record, sets topic = quot;TBDquot;
Advanced filtering

// Use Object Literals to construct quot;where clausesquot;

jsConfSpeakers.find({name:quot;Chris Andersonquot;});
// returns [2]
Advanced filtering

// Use Object Literals to construct quot;where clausesquot;

jsConfSpeakers.find({name:quot;Chris Andersonquot;});
// returns [2]
jsConfSpeakers.find({topic:{like:quot;Web Appsquot;}});
// returns [3,4]
Advanced filtering

// Use Object Literals to construct quot;where clausesquot;

jsConfSpeakers.find({name:quot;Chris Andersonquot;});
// returns [2]
jsConfSpeakers.find({topic:{like:quot;Web Appsquot;}});
// returns [3,4]

jsConfSpeakers.find({
         topic:{like:quot;Web Appsquot;},
         name:{like:quot;Jeffquot;}});
// returns [3]
// quot;where topic like Web Apps and name like Jeffquot;
Let's see it in action...
.forEach() in details

collection.forEach(
  function (r,index) {
      //whatever logic here
  },[optional filter]);
.forEach() in details

collection.forEach(
  function (r,index) {
      //whatever logic here
  },[optional filter]);


// modify r and return it to update the record
collection.forEach(
   function (r,index) {
       r.field = quot;new valuequot;;
       return r;
   });
TaffyDB is Batteries Included
TaffyDB is Batteries Included

Events:
• onUpdate, onInsert, onRemove
TaffyDB is Batteries Included

Events:
• onUpdate, onInsert, onRemove

JSON Support
TaffyDB is Batteries Included

Events:
• onUpdate, onInsert, onRemove

JSON Support

typeOf() methods
TaffyDB is Batteries Included

Events:
• onUpdate, onInsert, onRemove

JSON Support

typeOf() methods

Object Methods
• isSameObject, mergeObject, etc
TaffyDB is Batteries Included

Events:
• onUpdate, onInsert, onRemove

JSON Support

typeOf() methods

Object Methods
• isSameObject, mergeObject, etc

Utility Methods
Does it scale?
Sites Using TaffyDB
Joe's Goals (joesgoals.com)
QuoteWizard (quotewizard.com)
VitaList (vitalist.com)
MostRecent (mostrecent.net)
http://taffydb.com

Learn - Download - Find Help
      Contribute Code

Weitere ähnliche Inhalte

Was ist angesagt?

Cassandra and Spark, closing the gap between no sql and analytics codemotio...
Cassandra and Spark, closing the gap between no sql and analytics   codemotio...Cassandra and Spark, closing the gap between no sql and analytics   codemotio...
Cassandra and Spark, closing the gap between no sql and analytics codemotio...
Duyhai Doan
 
Introduction tomongodb
Introduction tomongodbIntroduction tomongodb
Introduction tomongodb
Lee Theobald
 

Was ist angesagt? (11)

CPANTS: Kwalitative website and its tools
CPANTS: Kwalitative website and its toolsCPANTS: Kwalitative website and its tools
CPANTS: Kwalitative website and its tools
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
 
Xml processing in scala
Xml processing in scalaXml processing in scala
Xml processing in scala
 
Rails database optimization
Rails database optimizationRails database optimization
Rails database optimization
 
Cassandra and Spark, closing the gap between no sql and analytics codemotio...
Cassandra and Spark, closing the gap between no sql and analytics   codemotio...Cassandra and Spark, closing the gap between no sql and analytics   codemotio...
Cassandra and Spark, closing the gap between no sql and analytics codemotio...
 
Spark + Clojure for Topic Discovery - Zalando Tech Clojure/Conj Talk
Spark + Clojure for Topic Discovery - Zalando Tech Clojure/Conj TalkSpark + Clojure for Topic Discovery - Zalando Tech Clojure/Conj Talk
Spark + Clojure for Topic Discovery - Zalando Tech Clojure/Conj Talk
 
OData RESTful implementation
OData RESTful implementationOData RESTful implementation
OData RESTful implementation
 
Getting Started with React
Getting Started with ReactGetting Started with React
Getting Started with React
 
Graphql
GraphqlGraphql
Graphql
 
Introduction tomongodb
Introduction tomongodbIntroduction tomongodb
Introduction tomongodb
 
Building Data Mapper PHP5
Building Data Mapper PHP5Building Data Mapper PHP5
Building Data Mapper PHP5
 

Ähnlich wie Better Data Management using TaffyDB

development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...
development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...
development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...
ActsAsCon
 
Google apps script database abstraction exposed version
Google apps script database abstraction   exposed versionGoogle apps script database abstraction   exposed version
Google apps script database abstraction exposed version
Bruce McPherson
 
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby AmfIntegrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amf
railsconf
 

Ähnlich wie Better Data Management using TaffyDB (20)

Intro Open Social and Dashboards
Intro Open Social and DashboardsIntro Open Social and Dashboards
Intro Open Social and Dashboards
 
Relaxing With CouchDB
Relaxing With CouchDBRelaxing With CouchDB
Relaxing With CouchDB
 
development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...
development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...
development, ruby, conferences, frameworks, ruby on rails, confreaks, actsasc...
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
 
Os Pruett
Os PruettOs Pruett
Os Pruett
 
Coding Ajax
Coding AjaxCoding Ajax
Coding Ajax
 
Coding Ajax
Coding AjaxCoding Ajax
Coding Ajax
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
 
Ajax
AjaxAjax
Ajax
 
I Feel Pretty
I Feel PrettyI Feel Pretty
I Feel Pretty
 
Boston Computing Review - Java Server Pages
Boston Computing Review - Java Server PagesBoston Computing Review - Java Server Pages
Boston Computing Review - Java Server Pages
 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work for you
 
Google apps script database abstraction exposed version
Google apps script database abstraction   exposed versionGoogle apps script database abstraction   exposed version
Google apps script database abstraction exposed version
 
All I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web FrameworkAll I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web Framework
 
Scala + WattzOn, sitting in a tree....
Scala + WattzOn, sitting in a tree....Scala + WattzOn, sitting in a tree....
Scala + WattzOn, sitting in a tree....
 
"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues
 
Out with Regex, In with Tokens
Out with Regex, In with TokensOut with Regex, In with Tokens
Out with Regex, In with Tokens
 
Couch Db.0.9.0.Pub
Couch Db.0.9.0.PubCouch Db.0.9.0.Pub
Couch Db.0.9.0.Pub
 
Pascarello_Investigating JavaScript and Ajax Security
Pascarello_Investigating JavaScript and Ajax SecurityPascarello_Investigating JavaScript and Ajax Security
Pascarello_Investigating JavaScript and Ajax Security
 
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby AmfIntegrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amf
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Better Data Management using TaffyDB

  • 1. Better Data Management with TaffyDB taffydb.com
  • 2. Who here considered themselves a JavaScript Programmer 5 years ago?
  • 3.
  • 4. Three Types of JavaScript Developer
  • 5. Three Types of JavaScript Developer
  • 6. Three Types of JavaScript Developer
  • 7. Three Types of JavaScript Developer
  • 8. Three Types of JavaScript Developer
  • 9. Three Types of JavaScript Developer
  • 10.
  • 11. It all started with arrays
  • 12. It all started with arrays var todos = [ [quot;Home To Dosquot;,1,false,[ [quot;Replace light bulbsquot;,false,quot;Ianquot;], [quot;Clean out deskquot;,false,quot;Ianquot;]] ], [quot;Work To Dosquot;,0,true,[ [quot;Fix bug with formquot;,false,quot;Ianquot;], [quot;Draft requirements docquot;,false,quot;Ianquot;], [quot;Learn JavaScript Objectsquot;,false,quot;Ianquot;]] ] ];
  • 13. It all started with arrays var todos = [ [quot;Home To Dosquot;,1,false,[ [quot;Replace light bulbsquot;,false,quot;Ianquot;], [quot;Clean out deskquot;,false,quot;Ianquot;]] ], [quot;Work To Dosquot;,0,true,[ [quot;Fix bug with formquot;,false,quot;Ianquot;], [quot;Draft requirements docquot;,false,quot;Ianquot;], [quot;Learn JavaScript Objectsquot;,false,quot;Ianquot;]] ] ]; // update Fix bug with form to complete todos[1][3][0][1] = true;
  • 14. Functions like this function checkTask (list,task) { for(var li = 0;li<todos;li++) { if (todos[li][0] == list) { for (var ta = 0; ta < todos[li][3]; ta++) { if (todos[li][3][ta][0] == task) { todos[li][3][ta][1] == true; } } } } } checkTask(quot;Work To Dosquot;,quot;Draft requirements docquot;);
  • 15.
  • 17. JavaScript Object Literals Useful for storing related name value pairs: {country:quot;United Statesquot;, government:quot;Democracyquot;, president:quot;Barrak Obamaquot;}
  • 18. JavaScript Object Literals Useful for storing related name value pairs: {country:quot;United Statesquot;, government:quot;Democracyquot;, president:quot;Barrak Obamaquot;} Also useful for composing instructions for functions: find({government:quot;Democracyquot;}) // find all records where government == Democracy
  • 20. This is TaffyDB • A wrapper for object literals (records)
  • 21. This is TaffyDB • A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects)
  • 22. This is TaffyDB • A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects) • Uses familiar database concepts
  • 23. This is TaffyDB • A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects) • Uses familiar database concepts • But it isn't a DB - no persistence
  • 24. This is TaffyDB • A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects) • Uses familiar database concepts • But it isn't a DB - no persistence • Thin (under 12K) • Opensource and Free • Maintained (v1.7.1) • One global object, no prototype modification
  • 25. Create a data collection // create a populated data collection var jsConfSpeakers = TAFFY([ {quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;}, {quot;namequot;:quot;Francisco Tolmaskquot;,quot;topicquot;:quot;Objective-Jquot;}, {quot;namequot;:quot;Chris Andersonquot;,quot;topicquot;:quot;CouchDBquot;}, {quot;namequot;:quot;Jeff Hayniequot;,quot;topicquot;:quot;Web Apps on the Desktopquot;}, {quot;namequot;:quot;Stoyan Stefanovquot;,quot;topicquot;:quot;Kick Ass Web Appsquot;} ]);
  • 26. Insert jsConfSpeakers.insert( {quot;namequot;:quot;Richard D. Worthquot;,quot;topicquot;:quot;jQuery UIquot;} );
  • 27. Getting records jsConfSpeakers.first(); // returns {quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;}
  • 28. Getting records jsConfSpeakers.first(); // returns {quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;} // TaffyDB filtering is overloaded // 0 and [0] will both return the first record jsConfSpeakers.get(0); jsConfSpeakers.get([0]); // returns [{quot;namequot;:quot;John Resigquot;,quot;topicquot;:quot;Surprise!quot;}]
  • 29. Remove // delete is a reserved word // use remove function instead jsConfSpeakers.remove(0);
  • 31. Advanced filtering // Use Object Literals to construct quot;where clausesquot; jsConfSpeakers.find({name:quot;Chris Andersonquot;}); // returns [2]
  • 32. Advanced filtering // Use Object Literals to construct quot;where clausesquot; jsConfSpeakers.find({name:quot;Chris Andersonquot;}); // returns [2] jsConfSpeakers.find({topic:{like:quot;Web Appsquot;}}); // returns [3,4]
  • 33. Advanced filtering // Use Object Literals to construct quot;where clausesquot; jsConfSpeakers.find({name:quot;Chris Andersonquot;}); // returns [2] jsConfSpeakers.find({topic:{like:quot;Web Appsquot;}}); // returns [3,4] jsConfSpeakers.find({ topic:{like:quot;Web Appsquot;}, name:{like:quot;Jeffquot;}}); // returns [3] // quot;where topic like Web Apps and name like Jeffquot;
  • 34. Let's see it in action...
  • 35. .forEach() in details collection.forEach( function (r,index) { //whatever logic here },[optional filter]);
  • 36. .forEach() in details collection.forEach( function (r,index) { //whatever logic here },[optional filter]); // modify r and return it to update the record collection.forEach( function (r,index) { r.field = quot;new valuequot;; return r; });
  • 38. TaffyDB is Batteries Included Events: • onUpdate, onInsert, onRemove
  • 39. TaffyDB is Batteries Included Events: • onUpdate, onInsert, onRemove JSON Support
  • 40. TaffyDB is Batteries Included Events: • onUpdate, onInsert, onRemove JSON Support typeOf() methods
  • 41. TaffyDB is Batteries Included Events: • onUpdate, onInsert, onRemove JSON Support typeOf() methods Object Methods • isSameObject, mergeObject, etc
  • 42. TaffyDB is Batteries Included Events: • onUpdate, onInsert, onRemove JSON Support typeOf() methods Object Methods • isSameObject, mergeObject, etc Utility Methods
  • 44.
  • 45.
  • 51. http://taffydb.com Learn - Download - Find Help Contribute Code