forked from typicaljoe/taffydb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
node-demo.js
99 lines (82 loc) · 2.73 KB
/
node-demo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
var TAFFY = require("./taffy").taffy;
console.log(TAFFY);
var friendList = [
{"id":1,"gender":"M","first":"John","last":"Smith",
"city":"Seattle, WA","status":"Active"},
{"id":2,"gender":"F","first":"Kelly","last":"Ruth",
"city":"Dallas, TX","status":"Active"},
{"id":3,"gender":"M","first":"Jeff","last":"Stevenson",
"city":"Washington, D.C.","status":"Active"},
{"id":4,"gender":"F","first":"Jennifer","last":"Gill",
"city":"Seattle, WA","status":"Active"}
];
var friend_db = TAFFY(friendList);
var taffy_map = {
by_city : friend_db({ city : "Seattle, WA"}),
by_id : friend_db({ id : 1}),
by_id_f : friend_db({ id : '1'}),
by_name : friend_db({ first : 'John',last:'Smith'}),
kelly_by_id : friend_db({ id : 2}).first(),
kelly_last_name : friend_db({ id : 2}).first().last,
id_list : friend_db().select( 'id' ),
city_list : friend_db().distinct( 'city' ),
filter_list : friend_db().filter({ city : "Seattle, WA"})
};
for ( key_name in taffy_map ){
if ( taffy_map.hasOwnProperty( key_name ) ) {
data_val = taffy_map[ key_name ];
var var_type = null;
if (undefined === data_val ){
var_type = 'Undefined';
}
else if (data_val === null ){
var_type = 'Null';
}
else{
var_type = {}.toString.call(data_val).slice(8, -1);
}
msg_text = key_name + ': \n ===================\n';
switch ( var_type ){
case 'Object' :
if ( data_val.hasOwnProperty( 'get' ) ){
msg_text += JSON.stringify( data_val.get() );
}
else {
msg_text += JSON.stringify( data_val );
}
break;
case 'Number' :
msg_text += String( data_val );
break;
default :
msg_text += JSON.stringify( data_val );
}
msg_text += '\n\n';
console.log( msg_text );
}
}
console.log( 'Example filter bug - rows changed without using '
+ '.update() will filter by their original values. '
);
friend_db().each(function ( row_map, idx ) {
if ( row_map.city === 'Seattle, WA' ){
row_map.city = 'WallaWalla, WA';
}
});
console.log( 'We expect 0 rows, but get 2... ' );
console.log(
friend_db().filter({ city : 'Seattle, WA'}).get()
);
console.log( '...even though the city has changed in the collection.' );
console.log( friend_db().get() );
console.log( '' );
console.log( 'Example filter when .update() is used.');
friend_db = TAFFY( friendList );
friend_db({ city : 'Seattle, WA' })
.update({ city : 'WallaWalla, WA' });
console.log( 'now we get the correct response (0 rows) ...' );
console.log(
friend_db().filter({ city : 'Seattle, WA'}).get()
);
console.log( friend_db().get() );
console.log( '... that reflects the taffy collection.' );