Skip to content

Commit f02641c

Browse files
committed
test(populate): repro #5737
1 parent f008895 commit f02641c

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

test/model.populate.test.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3251,6 +3251,42 @@ describe('model: populate:', function() {
32513251
db.close(done);
32523252
});
32533253

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+
32543290
it('maps results back to correct document (gh-1444)', function(done) {
32553291
var articleSchema = new Schema({
32563292
body: String,

0 commit comments

Comments
 (0)