2016-11-20 499 views
2

我得到這個錯誤:未處理拒絕SequelizeUniqueConstraintError:驗證錯誤

Unhandled rejection SequelizeUniqueConstraintError: Validation error 

我該如何解決這個問題?

這是我的模型/ user.js的

"use strict"; 

module.exports = function(sequelize, DataTypes) { 
    var User = sequelize.define("User", { 
    id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true}, 
    name: DataTypes.STRING, 
    environment_hash: DataTypes.STRING 
    }, { 
    tableName: 'users', 
    underscored: false, 
    timestamps: false 
    } 

); 

    return User; 
}; 

這是我routes.js:

app.post('/signup', function(request, response){ 

     console.log(request.body.email); 
     console.log(request.body.password); 

     User 
     .find({ where: { name: request.body.email } }) 
      .then(function(err, user) { 
       if (!user) { 
         console.log('No user has been found.'); 

         User.create({ name: request.body.email }).then(function(user) { 
          // you can now access the newly created task via the variable task 
          console.log('success'); 
         }); 

       } 
      }); 



    }); 

回答

4

User.create()調用返回一個Promise.reject(),但沒有.catch(err)處理它。如果沒有醒目的錯誤,知道的輸入值,很難說驗證錯誤是什麼 - 在request.body.email可能過長等

趕上承諾拒絕看到錯誤/確認細節

User.create({ name: request.body.email }) 
.then(function(user) { 
    // you can now access the newly created task via the variable task 
    console.log('success'); 
}) 
.catch(function(err) { 
    // print the error details 
    console.log(err, request.body.email); 
}); 
3

如果您創建了唯一約束,請檢查您的數據庫,我的猜測是您將某些值賦予unique:true並進行了更改,但是sequelize無法從數據庫中刪除它。

相關問題