2017-12-07 7 views
6
module.exports = (sequelize, DataTypes) => { 
    const User = sequelize.define(
    "User", 
    { 
     username: { 
     type: DataTypes.STRING, 
     unique: true 
     }, 
     firstName: { 
     type: DataTypes.STRING 
     }, 
     lastName: { 
     type: DataTypes.STRING 
     }, 
     email: { 
     type: DataTypes.STRING 
     }, 
     password: { 
     type: DataTypes.STRING 
     }, 
     lastLogin: { 
     type: DataTypes.DATE 
     }, 
     active: { 
     type: DataTypes.BOOLEAN 
     }, 
     lastName: { 
     type: DataTypes.STRING 
     } 
    }, { 
     paranoid: true, 
     classMethods: { 
     associate: models => { 
      User.hasOne(models.User, { 
      as: "createdByUser" 
      }) 

      User.hasOne(models.User, { 
      as: "updatedByUser" 
      }) 
     } 
     } 
    } 
) 

    return User 
}; 

を作成していない私は、フィールドがPostgresのDBでcreatedByUserと呼ばれるように期待されるが、それはありません。私は間違って何をしていますか?私の自己参照Sequelizeモデルは余分な列に

答えて

2

ソリューションはSequelize(4+)の新しいバージョンで

module.exports = (sequelize, DataTypes) => { 
    const User = sequelize.define(
    "User", 
    { 
     username: { 
     type: DataTypes.STRING, 
     unique: true 
     }, 
     firstName: { 
     type: DataTypes.STRING 
     }, 
     lastName: { 
     type: DataTypes.STRING 
     }, 
     email: { 
     type: DataTypes.STRING 
     }, 
     password: { 
     type: DataTypes.STRING 
     }, 
     lastLogin: { 
     type: DataTypes.DATE 
     }, 
     active: { 
     type: DataTypes.BOOLEAN 
     } 
    }, { 
     paranoid: true 
    } 
) 

    User.associate = models => { 
    User.hasOne(models.User, { 
     as: "createdByUser" 
    }) 

    User.hasOne(models.User, { 
     as: "updatedByUser" 
    }) 
    } 

    return User 
}; 

た、classMethods

の必要はありません