我正在尝试将react与sequelize woth mysql一起使用。 我有 3 个模块:用户、角色和 User_Roles。我以为我已正确设置关联,但运行代码时显示:角色未与用户关联。
这是我的设置:
用户.js
module.exports = (sequelize, DataTypes) => {
const Users = sequelize.define("Users", {
user_fname: {
type: DataTypes.STRING,
allowNull: false,
},
user_mname: {
type: DataTypes.STRING,
allowNull: true,
},
user_sname: {
type: DataTypes.STRING,
allowNull: false,
},
user_fullname: {
type: DataTypes.STRING,
allowNull: false,
},
user_email: {
type: DataTypes.STRING,
allowNull: false,
},
user_pass: {
type: DataTypes.TEXT,
allowNull: false,
},
});
Users.associate = (models) => {
Users.hasMany(models.User_Roles);
};
return Users;
};
Roles.js:
module.exports = (sequelize, DataTypes) => {
const Roles = sequelize.define("Roles", {
roleName: {
type: DataTypes.STRING,
allowNull: false,
},
});
Roles.associate = (models) => {
Roles.hasMany(models.User_Roles);
}
return Roles;
}
User_Roles.js
module.exports = (sequelize, DataTypes) => {
const UserRoles = sequelize.define("User_Roles");
return UserRoles;
}
User.js // 路由
const express = require("express");
const router = express.Router();
const { Users, Roles } = require("../models");
router.get("/", async (req, res) => {
const listOfUsers = await Users.findAll({ include: [Roles] });
res.json({ listOfUsers: listOfUsers });
});
router.get("/byId/:id", async (req, res) => {
const id = req.params.id;
const user = await Users.findByPk(id);
res.json(user);
});
router.post("/", async (req, res) => {
const user = req.body;
await Users.create(user);
res.json(user);
});
module.exports = router;
在表:User_Roles 中,已经有 2 列:UserId 和 RoleId,所以我不确定为什么会收到该错误消息。
噢,愚蠢的我,我必须更新以下几行:
const { Users, Roles } = require("../models");
const listOfUsers = await Users.findAll({ include: [Roles] });
一定是:
const { Users, User_Roles } = require("../models");
const listOfUsers = await Users.findAll({ include: [User_Roles] });
这解决了问题。