添加 RoleId 和 UserId 会导致:TypeError:无法读取未定义的属性(读取“创建”)

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

我尝试在 User_Roles 表中添加 roleId 和 userId,但创建后显示错误:

TypeError: Cannot read properties of undefined (reading 'create')

这是 UserRoles.js 的模块文件:

module.exports = (sequelize, DataTypes) => {

    const UserRoles = sequelize.define("User_Roles");

    return UserRoles;
}

这是 UserRoles.js 的路由器文件:

const express = require("express");
const router = express.Router();
const UserRoles = require("../models").UserRoles;

router.post("/", async (req, res) => {
    const { RoleId, UserId } = req.body;
    const usrRoles = await UserRoles.create({ RoleId: RoleId, UserId: UserId });
    res.json(usrRoles);
});

module.exports = router;

在我有添加角色ID和用户ID的操作的页面上:

axios.post("http://localhost:3001/userRoles", { RoleId: parseInt(value, 10), UserId: selectedUserIdEdit }).then((response) => {
    console.log('response', response);
})

console.log 显示:RoleId: 1,UserId: 1,这是正确的,但它没有存储它。

reactjs sequelize.js
1个回答
0
投票

确保在 Sequelize 模型文件中正确定义并导出 UserRoles 模型。模型文件应如下所示:

module.exports = (sequelize, DataTypes) => {
    const UserRoles = sequelize.define("UserRoles", {
        RoleId: {
            type: DataTypes.INTEGER,
            allowNull: false,
        },
        UserId: {
            type: DataTypes.INTEGER,
            allowNull: false,
        },
    }, {
        // Additional model options (optional)
        tableName: 'User_Roles', // Specify table name if it's not     automatically inferred
        timestamps: false, // Disable timestamps if not needed
    });

    return UserRoles;
};

检查UserRoles模型是否在models/index.js文件中正确导入和导出,通常如下所示:

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize(process.env.DATABASE_URL); // Adjust based on your config

    const db = {};
    
    db.UserRoles = require('./UserRoles')(sequelize, DataTypes);
    // Import other models as needed
    // db.OtherModel = require('./OtherModel')(sequelize, DataTypes);
    
    db.sequelize = sequelize;
    db.Sequelize = Sequelize;
    
    module.exports = db;
© www.soinside.com 2019 - 2024. All rights reserved.