@@ -91,7 +91,9 @@ var createRefForReals = (Firebase, path, routes, host) => {
91
91
if ( snapshotVal === null )
92
92
return cb ( null , null ) ;
93
93
var transformed = handler . transform ? handler . transform ( snapshotVal ) : snapshotVal ;
94
- addIdForLists ( snapshotVal , matchInfo . route , path ) ;
94
+ if ( matchInfo . route . handler == 'list' )
95
+ transformed = transformListChildren ( transformed , routes , path ) ;
96
+ addIdForDirectRefToListChild ( transformed , matchInfo . route , path ) ;
95
97
addRelationships ( transformed , matchInfo ) ;
96
98
addIndexes ( transformed , matchInfo ) ;
97
99
cb ( null , transformed ) ;
@@ -118,7 +120,23 @@ var createRefForReals = (Firebase, path, routes, host) => {
118
120
return { set :set , getValue, push, child, listen } ;
119
121
} ;
120
122
121
- var addIdForLists = ( val , route , path ) => {
123
+ var transformListChildren = ( children , routes , path ) => {
124
+ // should probably recurse here
125
+ return children . map ( ( child ) => {
126
+ Object . keys ( child ) . forEach ( ( key ) => {
127
+ if ( key === '_id' ) // hmmm this might get out of hand
128
+ return ;
129
+ var childPath = `${ path } /${ child . _id } /${ key } ` ;
130
+ var matchInfo = router . match ( childPath , routes ) ;
131
+ var handler = matchInfo . route . handler ;
132
+ if ( handler . transform )
133
+ child [ key ] = handler . transform ( child [ key ] ) ;
134
+ } ) ;
135
+ return child ;
136
+ } ) ;
137
+ } ;
138
+
139
+ var addIdForDirectRefToListChild = ( val , route , path ) => {
122
140
if ( route . parent && route . parent . handler == 'list' )
123
141
val . _id = path . split ( '/' ) . reverse ( ) [ 0 ] ;
124
142
} ;
0 commit comments