@@ -38,6 +38,10 @@ var list = {
38
38
} ;
39
39
40
40
var hash = {
41
+ toString ( ) {
42
+ return 'hash' ;
43
+ } ,
44
+
41
45
validate ( obj , path ) {
42
46
error ( 'object' !== typeof obj , `Validation Error: received non-object for path "${ path } "` ) ;
43
47
}
@@ -90,9 +94,12 @@ var createRefForReals = (Firebase, path, routes, host) => {
90
94
var snapshotVal = snapshot . val ( ) ;
91
95
if ( snapshotVal === null )
92
96
return cb ( null , null ) ;
97
+ // all of this is garbage, each type should handle the transforms
93
98
var transformed = handler . transform ? handler . transform ( snapshotVal ) : snapshotVal ;
94
99
if ( matchInfo . route . handler == 'list' )
95
100
transformed = transformListChildren ( transformed , routes , path ) ;
101
+ if ( matchInfo . route . handler == 'hash' )
102
+ transformed = transformHash ( transformed , routes , path ) ;
96
103
addIdForDirectRefToListChild ( transformed , matchInfo . route , path ) ;
97
104
addRelationships ( transformed , matchInfo ) ;
98
105
addIndexes ( transformed , matchInfo ) ;
@@ -120,11 +127,22 @@ var createRefForReals = (Firebase, path, routes, host) => {
120
127
return { set :set , getValue, push, child, listen } ;
121
128
} ;
122
129
130
+ var transformHash = ( child , routes , path ) => {
131
+ Object . keys ( child ) . forEach ( ( key ) => {
132
+ var childPath = `${ path } /${ key } ` ;
133
+ var matchInfo = router . match ( childPath , routes ) ;
134
+ var handler = matchInfo . route . handler ;
135
+ if ( handler . transform )
136
+ child [ key ] = handler . transform ( child [ key ] ) ;
137
+ } ) ;
138
+ return child ;
139
+ } ;
140
+
123
141
var transformListChildren = ( children , routes , path ) => {
124
142
// should probably recurse here
125
143
return children . map ( ( child ) => {
126
144
Object . keys ( child ) . forEach ( ( key ) => {
127
- if ( key === '_id' ) // hmmm this might get out of hand
145
+ if ( key === '_id' ) // hmmm, I am dubious of much more of this
128
146
return ;
129
147
var childPath = `${ path } /${ child . _id } /${ key } ` ;
130
148
var matchInfo = router . match ( childPath , routes ) ;
0 commit comments