@@ -171,19 +171,21 @@ userSchema.statics.findByEmail = function findByEmail(email, cb) {
171171 * Queries User collection by username and returns one User document.
172172 *
173173 * @param {string } username - Username string
174- * @param {boolean } [caseInsensitive] - Does a caseInsensitive query, defaults to false
174+ * @param {Object } [options] - Optional options
175+ * @param {boolean } options.caseInsensitive - Does a caseInsensitive query, defaults to false
175176 * @callback [cb] - Optional error-first callback that passes User document
176177 * @return {Promise<Object> } - Returns Promise fulfilled by User document
177178 */
178- userSchema . statics . findByUsername = function findByUsername ( username , caseInsensitive , cb ) {
179+ userSchema . statics . findByUsername = function findByUsername ( username , options , cb ) {
179180 const query = {
180181 username
181182 } ;
182- if ( arguments . length === 3
183- || ( arguments . length === 2 && typeof caseInsensitive === 'boolean ' && caseInsensitive ) ) {
183+ if ( ( arguments . length === 3 && options . caseInsensitive )
184+ || ( arguments . length === 2 && typeof options === 'object ' && options . caseInsensitive ) ) {
184185 return this . findOne ( query ) . collation ( { locale : 'en' , strength : 2 } ) . exec ( cb ) ;
185186 }
186- return this . findOne ( query , cb || caseInsensitive ) ;
187+ const callback = typeof options === 'function' ? options : cb ;
188+ return this . findOne ( query , callback ) ;
187189} ;
188190
189191/**
@@ -193,23 +195,26 @@ userSchema.statics.findByUsername = function findByUsername(username, caseInsens
193195 * a username or email.
194196 *
195197 * @param {string } value - Email or username
196- * @param {boolean } caseInsensitive - Does a caseInsensitive query rather than
197- * default query for username or email, defaults
198- * to false
198+ * @param {Object } [options] - Optional options
199+ * @param {boolean } options.caseInsensitive - Does a caseInsensitive query rather than
200+ * default query for username or email, defaults
201+ * to false
199202 * @callback [cb] - Optional error-first callback that passes User document
200203 * @return {Promise<Object> } - Returns Promise fulfilled by User document
201204 */
202- userSchema . statics . findByEmailOrUsername = function findByEmailOrUsername ( value , caseInsensitive , cb ) {
205+ userSchema . statics . findByEmailOrUsername = function findByEmailOrUsername ( value , options , cb ) {
206+ // do the case insensitive stuff
203207 const isEmail = value . indexOf ( '@' ) > - 1 ;
204- if ( arguments . length === 3
205- || ( arguments . length === 2 && typeof caseInsensitive === 'boolean ' && caseInsensitive ) ) {
208+ if ( ( arguments . length === 3 && options . caseInsensitive )
209+ || ( arguments . length === 2 && typeof options === 'object ' && options . caseInsensitive ) ) {
206210 const query = isEmail ? { email : value } : { username : value } ;
207211 return this . findOne ( query ) . collation ( { locale : 'en' , strength : 2 } ) . exec ( cb ) ;
208212 }
213+ const callback = typeof options === 'function' ? options : cb ;
209214 if ( isEmail ) {
210- return this . findByEmail ( value , cb || caseInsensitive ) ;
215+ return this . findByEmail ( value , callback ) ;
211216 }
212- return this . findByUsername ( value , cb || caseInsensitive ) ;
217+ return this . findByUsername ( value , callback ) ;
213218} ;
214219
215220/**
0 commit comments