Tôi đã thay đổi nó để sử dụng findOne thay vì find và nó hoạt động ngay bây giờ. Tôi không quá chắc chắn tại sao điều này sẽ tạo ra sự khác biệt. Đây là hàm findOne mà tôi đã sử dụng:
User.findOne({'local.rooms': {$elemMatch: {name: req.body.username}}}, function (err, user) {
if (err){
return done(err);
}
if (user) {
console.log("ROOM NAME FOUND");
req.roomNameAlreadyInUse = true;
next();
} else {
req.roomNameAlreadyInUse = false;
console.log("ROOM NAME NOT FOUND");
next();
}
});