Browse Source

BugFix: the findOne method of mongoose returns unrelated data when the query argument is undefined

Yuki Takei 8 years ago
parent
commit
89606fb904
1 changed files with 12 additions and 22 deletions
  1. 12 22
      lib/models/user.js

+ 12 - 22
lib/models/user.js

@@ -436,34 +436,24 @@ module.exports = function(crowi) {
 
 
   userSchema.statics.findUserByUsername = function(username) {
-    var User = this;
-    return new Promise(function(resolve, reject) {
-      User.findOne({username: username}, function (err, userData) {
-        if (err) {
-          return reject(err);
-        }
-
-        return resolve(userData);
-      });
-    });
+    if (username == null) {
+      return Promise.resolve(null);
+    }
+    return this.findOne({username});
   };
 
   userSchema.statics.findUserByApiToken = function(apiToken) {
-    var self = this;
-
-    return new Promise(function(resolve, reject) {
-      self.findOne({apiToken: apiToken}, function (err, userData) {
-        if (err) {
-          return reject(err);
-        } else {
-          return resolve(userData);
-        }
-      });
-    });
+    if (apiToken == null) {
+      return Promise.resolve(null);
+    }
+    return this.findOne({apiToken});
   };
 
   userSchema.statics.findUserByGoogleId = function(googleId, callback) {
-    this.findOne({googleId: googleId}, function (err, userData) {
+    if (googleId == null) {
+      callback(null, null);
+    }
+    this.findOne({googleId}, function (err, userData) {
       callback(err, userData);
     });
   };