@@ -3251,6 +3251,42 @@ describe('model: populate:', function() {
3251
3251
db . close ( done ) ;
3252
3252
} ) ;
3253
3253
3254
+ it ( 'populating an array of refs, slicing, and fetching many (gh-5737)' , function ( done ) {
3255
+ var BlogPost = db . model ( 'gh5737_0' , new Schema ( {
3256
+ title : String ,
3257
+ fans : [ { type : ObjectId , ref : 'gh5737' } ]
3258
+ } ) ) ;
3259
+ var User = db . model ( 'gh5737' , new Schema ( { name : String } ) ) ;
3260
+
3261
+ User . create ( [ { name : 'Fan 1' } , { name : 'Fan 2' } ] , function ( error , fans ) {
3262
+ assert . ifError ( error ) ;
3263
+ var posts = [
3264
+ { title : 'Test 1' , fans : [ fans [ 0 ] . _id , fans [ 1 ] . _id ] } ,
3265
+ { title : 'Test 2' , fans : [ fans [ 1 ] . _id , fans [ 0 ] . _id ] }
3266
+ ] ;
3267
+ BlogPost . create ( posts , function ( error ) {
3268
+ assert . ifError ( error ) ;
3269
+ BlogPost .
3270
+ find ( { } ) .
3271
+ slice ( 'fans' , [ 0 , 5 ] ) .
3272
+ populate ( 'fans' ) .
3273
+ exec ( function ( err , blogposts ) {
3274
+ assert . ifError ( error ) ;
3275
+
3276
+ assert . equal ( blogposts [ 0 ] . title , 'Test 1' ) ;
3277
+ assert . equal ( blogposts [ 1 ] . title , 'Test 2' ) ;
3278
+
3279
+ assert . equal ( blogposts [ 0 ] . fans [ 0 ] . name , 'Fan 1' ) ;
3280
+ assert . equal ( blogposts [ 0 ] . fans [ 1 ] . name , 'Fan 2' ) ;
3281
+
3282
+ assert . equal ( blogposts [ 1 ] . fans [ 0 ] . name , 'Fan 2' ) ;
3283
+ assert . equal ( blogposts [ 1 ] . fans [ 1 ] . name , 'Fan 1' ) ;
3284
+ done ( ) ;
3285
+ } ) ;
3286
+ } ) ;
3287
+ } ) ;
3288
+ } ) ;
3289
+
3254
3290
it ( 'maps results back to correct document (gh-1444)' , function ( done ) {
3255
3291
var articleSchema = new Schema ( {
3256
3292
body : String ,
0 commit comments