2016-07-27 79 views
0

你好,我使用貓鼬從mongodb獲取數據。我有部署在heroku上的應用程序。當我在本地運行我的應用程序時,如果用戶存在,將出現驗證錯誤。如果我在heroku上運行它,我會得到驗證錯誤,但應用程序也崩潰了。Mongoose驗證在Heroku上崩潰

這是我創建用戶的發佈請求。

exports.create = function (req, res, next) { 
     var newUser = new User(req.body); 
     console.log(newUser); 
     newUser.provider = 'local'; 
     newUser.role = 'user'; 
     newUser.save(function(err, user) { 
     if (err) return res.status(400).json(err); 
     var token = jwt.sign({_id: user._id }, config.secrets.session, { expiresIn: 60*5 }); 
     res.json({ token: token }); 
     }); 
    };  

這是貓鼬驗證。

UserSchema 
    .path('email') 
    .validate(function(value, respond) { 
     var self = this; 
     this.constructor.findOne({email: value}, function(err, user) { 
     if(err) throw err; 
     if(user) { 
      if(self.id === user.id) return respond(true); 
      return respond(false); 
     } 
     respond(true); 
     }); 
    }, 'The specified email address is already in use.'); 

這是錯誤:

「堆」:「在MongooseError.ValidationError錯誤。\ n(/Users/panayiotis/WebstormProjects/SmartHome/node_modules/mongoose/lib/error/validation.js: 22:16)\ n在model.Document.invalidate(/Users/panayiotis/WebstormProjects/SmartHome/node_modules/mongoose/lib/document.js:1162:32)\n at/Users/panayiotis/WebstormProjects/SmartHome/node_modules/mongoose/lib/document.js:1037:16 \ n在驗證(/Users/panayiotis/WebstormProjects/SmartHome/node_modules/mongoose/lib/schematype.js:653:7)\n at/Users/panayiotis/WebstormProjects/SmartHome /node_modules/mongoose/lib/schematype.js:678:11\n在Query。(/ Users/panayiotis/WebstormProjects/SmartHome/server/api/user/user.model.js:80:16)\ n在/Users/panayiotis/WebstormProjects/SmartHome/node_modules/mongoose/node_modules/kareem/index.js:177:19\n at/Users/panayiotis/WebstormProjects/SmartHome /node_modules/mongoose/node_modules/kareem/index.js:109:16\n at nextTickCallbackWith0Args(node.js:420:9)\ n at process._tickCallback(node.js:349:13)「, 」message「 : 「用戶驗證失敗」, 「名稱」: 「ValidationError」, 「錯誤」:{ 「電子郵件」:{ 「屬性」:{ 「類型」: 「用戶定義的」, 「消息」:「 「, 」path「:」email「, 」value「:」[email protected]「 },

+0

雖然我不確定,但你有沒有試圖返回最後的'響應(真);'在你的驗證? – CENT1PEDE

回答

0

我解決它更新貓鼬