我试图用Sequelize在Postgres中创建用户和模板之间的多对多关系。但当我试图创建一个用户时,我会出现以下错误,无法找到问题所在
Executing (default): INSERT INTO "users" ("id","createdAt","updatedAt") VALUES (DEFAULT,$1,$2) RETURNING "id","userId","templateId","createdAt","updatedAt"
error: column "userId" does not exist
用户模型
"use strict";
module.exports = (sequelize, DataTypes) => {
const user = sequelize.define(
"user",
{
name: DataTypes.STRING,
email: DataTypes.STRING,
phone: DataTypes.STRING,
password: DataTypes.STRING
},
{}
);
user.associate = function(models) {
user.belongsToMany(models.template, {through: 'User_Templates'})
};
return user;
};
模板模型
"use strict";
module.exports = (sequelize, DataTypes) => {
const template = sequelize.define(
"template",
{
name: DataTypes.STRING,
html: DataTypes.STRING
},
{}
);
template.associate = function(models) {
template.belongsToMany(models.user, {through: 'User_Templates'})
};
return template;
};
用户模板模型(连接表(
"use strict";
module.exports = (sequelize, DataTypes) => {
const User_Template = sequelize.define(
"user",
{
userId: DataTypes.INTEGER,
templateId: DataTypes.INTEGER
},
{}
);
User_Template.associate = function(models) {
User_Template.belongsTo(models.user, {
foreignKey: 'userId',
as: 'user'
})
User_Template.belongsTo(models.template, {
foreignKey: 'templateId',
as: 'template'
})
};
return User_Template;
};
您在西方重新定义了User
模型,为User_Template
模型指定了相同的名称user
:
const User_Template = sequelize.define(
"user",
只需将其更改为User_Templates
:
const User_Template = sequelize.define(
"User_Templates",