2016-01-07 92 views
1

我試圖將我的用戶模型與我的組織模型關聯,但我遇到了一個錯誤,該錯誤說Error: user is not associated to organization!儘管我正在按照將用戶關聯到我的組織的過程。我正在使用的關聯方法有可能導致問題嗎?續集關聯錯誤未關聯

用戶模型(user.js的):

var bcrypt = require('bcrypt-nodejs'); 

module.exports = function(sequelize, DataTypes) { 

var User = sequelize.define('user', { 
    user_id: { 
     type: DataTypes.INTEGER, 
     autoIncrement: true, 
     primaryKey: true 
    }, 
    firstName: { 
     type: DataTypes.STRING, 
     field: 'first_name' 
    }, 
    lastName: { 
     type: DataTypes.STRING, 
     field: 'last_name' 
    }, 
    email: { 
     type: DataTypes.STRING, 
     isEmail: true, 
     unique: true 
    }, 
    password: DataTypes.STRING, 
    organizationId: { 
     type: DataTypes.INTEGER, 
     field: 'organization_id', 
     allowNull: true 
    } 
}, { 
    freezeTableName: true, 
    classMethods: { 
     generateHash: function(password) { 
      return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); 
     }, 
     associate: function(db) { 
      User.belongsTo(db.Organization, {foreignKey: 'organizationId'}); 
     }, 
    }, 
    instanceMethods: { 
     validPassword: function(password) { 
      return bcrypt.compareSync(password, this.password); 
     }, 
    }, 


}); 
    return User; 
} 

組織模型(organization.js):

module.exports = function(sequelize, DataTypes) { 

var Organization = sequelize.define('organization', { 
    organizationId: { 
     type: DataTypes.INTEGER, 
     field: 'organization_id', 
     autoIncrement: true, 
     primaryKey: true 
    }, 
    organizationName: { 
     type: DataTypes.STRING, 
     field: 'organization_name' 
    }, 
    admin: DataTypes.STRING, 
    members: DataTypes.STRING 
},{ 
    freezeTableName: true 
}); 

    return Organization; 
} 

索引表連接(DB-index.js):

var Sequelize = require('sequelize'); 
var path = require('path'); 
var config = require(path.resolve(__dirname, '..', '..','./config/config.js')); 
var sequelize = new Sequelize(config.database, config.username, config.password, { 
    host:'localhost', 
    port:'3306', 
    dialect: 'mysql' 
}); 

sequelize.authenticate().then(function(err) { 
    if (!!err) { 
     console.log('Unable to connect to the database:', err) 
    } else { 
     console.log('Connection has been established successfully.') 
    } 
}); 

var db = {} 

db.Organization = sequelize.import(__dirname + "/organization"); 

db.User = sequelize.import(__dirname + "/user"); 

db.Records = sequelize.import(__dirname + "/records"); 

db.User.associate(db); 
db.Records.associate(db); 

db.sequelize = sequelize; 
db.Sequelize = Sequelize; 

sequelize.sync(); 

module.exports = db; 

是觸發此錯誤的路由調用:

appRoutes.route('/sign-up/organization') 

    .get(function(req, res){ 
     models.User.find({ 
      where: { 
       user_id: req.user.email 
      }, attributes: [ 'user_id', 'email' 
      ] 
     }).then(function(user){ 
      res.render('pages/sign-up-organization.hbs',{ 
       user: req.user 
      }); 
     }) 

    }) 

    .post(function(req, res, user){ 
     models.Organization.create({ 
      organizationName: req.body.organizationName, 
      admin: req.body.admin, 
      user: { 
       organizationId: req.body.organizationId 
      } 
     }, { include: [models.User] }).then(function(){ 
      console.log(user.user_id); 
      res.redirect('/app'); 
     }).catch(function(error){ 
      res.send(error); 
      console.log('Error at Post'); 
     }) 
    }); 

回答

2

您需要設置關聯的反向,組織有許多用戶