问题描述
他认为表格之间的关系有问题。每个用户最多可以有一份实习申请。
但是,当我想从这些应用程序访问用户时,遇到了TypeError: include.model.getTableName is not a function
问题,我仍然没有解决。
我必须将 2 个模型相互组合。
用户模型
const User = sequelize.define('user',{
mail: {
allowNull: false,type: DataTypes.STRING,unique: {
args: true,msg: 'Bu mail adresi kullanılmaktadır !',},validate: {
notEmpty: {
args: true,msg: 'Bu alan boş bırakılamaz !',isEmail: {
args: true,msg: 'kurallara uygun mail adresi giriniz !',}
},password: {
allowNull: false,type: DataTypes.STRING(64),validate: {
len: {
args: [8,64],msg: 'Şifre en az 8 karakterden oluşabilir.'
},}
}
},{
tableName: "users",});
User.associate = (models) => {
User.hasOne(models.userrole,{
as: 'userroles',foreignKey: 'userID'
});
User.belongsTo(models.internship,{
as: 'internships',foreignKey: 'id'
});
};
实习模式
const Internship = sequelize.define('internship',{
userID: {
type: DataTypes.INTEGER,allowNull: false,userInfoID: {
type: DataTypes.INTEGER,schoolInfoID: {
type: DataTypes.INTEGER,privateInfoID: {
type: DataTypes.INTEGER,statusID: {
type: DataTypes.INTEGER,{
tableName: "internships"
});
Internship.associate = (models) => {
Internship.belongsTo(models.user,{
as: 'users',foreignKey: 'userID'
});
};
控制器
internship.findAll({
include: [
{
as:"users",model: user,]
}).then(result=>{
res.status(200).json({
result })
})
解决方法
您的 Internship 模型和用户模型中没有定义任何主键,并且关联中存在模型拼写错误。
const User = sequelize.define('user',{
id:{
allowNull: false,autoIncrement: true,primaryKey: true,type: DataTypes.INTEGER
},mail: {
allowNull: false,type: DataTypes.STRING,unique: {
args: true,msg: 'Bu mail adresi kullanılmaktadır !',},validate: {
notEmpty: {
args: true,msg: 'Bu alan boş bırakılamaz !',isEmail: {
args: true,msg: 'Kurallara uygun mail adresi giriniz !',}
},password: {
allowNull: false,type: DataTypes.STRING(64),validate: {
len: {
args: [8,64],msg: 'Şifre en az 8 karakterden oluşabilir.'
},}
}
},{
tableName: "users",});
User.associate = (models) => {
User.hasOne(models.userrole,{
as: 'userroles',foreignKey: 'userID'
});
User.belongsTo(models.Internship,{
as: 'internships',foreignKey: 'id'
});
};
实习模式
const Internship = sequelize.define('internship',userID: {
type: DataTypes.INTEGER,allowNull: false,userInfoID: {
type: DataTypes.INTEGER,schoolInfoID: {
type: DataTypes.INTEGER,privateInfoID: {
type: DataTypes.INTEGER,statusID: {
type: DataTypes.INTEGER,{
tableName: "internships"
});
Internship.associate = (models) => {
Internship.belongsTo(models.User,{
as: 'users',foreignKey: 'userID'
});
};
控制器
Internship.findAll({
include: [
{
as:"users",model: User,]
}).then(result=>{
res.status(200).json({
result })
})