The document discusses TaffyDB, a JavaScript library that provides a database-like API for managing and querying JavaScript object literals. It allows creating data collections, inserting, updating, filtering and removing records. Some key features include events for operations, JSON support, utility methods for objects, and batteries included functionality. The document provides examples of basic usage and querying records using object literals. It notes that while not a true database, TaffyDB is useful for sites that need to manage related data in the browser.
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;);
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
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;}
]);
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);
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;
});