未与用户关联的角色

问题描述 投票:0回答:1

我正在尝试将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,所以我不确定为什么会收到该错误消息。

reactjs sequelize.js
1个回答
0
投票

噢,愚蠢的我,我必须更新以下几行:

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] });

这解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.