@@ -160,10 +160,10 @@ Database.prototype.find = function(view) {
160160 var builder = new DatabaseBuilder ( ) ;
161161
162162 if ( view ) {
163- self . pending_reader_view . push ( { builder : builder , count : 0 , view : view } ) ;
163+ self . pending_reader_view . push ( { builder : builder , count : 0 , counter : 0 , view : view } ) ;
164164 setImmediate ( ( ) => self . next ( 6 ) ) ;
165165 } else {
166- self . pending_reader . push ( { builder : builder , count : 0 , view : view } ) ;
166+ self . pending_reader . push ( { builder : builder , count : 0 , counter : 0 , view : view } ) ;
167167 setImmediate ( ( ) => self . next ( 4 ) ) ;
168168 }
169169
@@ -207,11 +207,10 @@ Database.prototype.top = function(max, view) {
207207 builder . take ( max ) ;
208208
209209 if ( view ) {
210- self . pending_reader_view . push ( { builder : builder , count : 0 , view : view } ) ;
210+ self . pending_reader_view . push ( { builder : builder , count : 0 , counter : 0 , view : view } ) ;
211211 setImmediate ( ( ) => self . next ( 6 ) ) ;
212-
213212 } else {
214- self . pending_reader . push ( { builder : builder , count : 0 , view : view } ) ;
213+ self . pending_reader . push ( { builder : builder , count : 0 , counter : 0 , view : view } ) ;
215214 setImmediate ( ( ) => self . next ( 4 ) ) ;
216215 }
217216
@@ -513,12 +512,12 @@ Database.prototype.$reader2 = function(filename, items, callback) {
513512 item . count ++ ;
514513
515514 if ( ! builder . $sort ) {
516- if ( builder . $skip && builder . $skip > index )
517- continue ;
518- if ( builder . $take && builder . $take < item . count )
515+ if ( ( builder . $skip && builder . $skip > index ) || ( builder . $take && builder . $take <= item . counter ) )
519516 continue ;
520517 }
521518
519+ item . counter ++ ;
520+
522521 if ( item . type )
523522 continue ;
524523
@@ -607,7 +606,7 @@ Database.prototype.$views = function() {
607606 var writers = [ ] ;
608607
609608 for ( var i = 0 ; i < length ; i ++ )
610- response . push ( { response : [ ] , name : views [ i ] , builder : self . views [ views [ i ] ] , count : 0 } ) ;
609+ response . push ( { response : [ ] , name : views [ i ] , builder : self . views [ views [ i ] ] , count : 0 , counter : 0 } ) ;
611610
612611 var reader = Fs . createReadStream ( self . filename ) ;
613612 reader . on ( 'data' , framework_utils . streamer ( NEWLINE , function ( value , index ) {
@@ -622,12 +621,12 @@ Database.prototype.$views = function() {
622621 response [ j ] . count ++ ;
623622
624623 if ( ! item . $sort ) {
625- if ( item . $skip && item . $skip > index )
626- continue ;
627- if ( item . $take && item . $take < response [ j ] . count )
624+ if ( ( item . $skip && item . $skip > index ) || ( item . $take && item . $take < response [ j ] . counter ) )
628625 continue ;
629626 }
630627
628+ response [ j ] . counter ++ ;
629+
631630 if ( ! item . type )
632631 response [ j ] . response . push ( output ) ;
633632 }
0 commit comments