gpt4 book ai didi

node.js - Node - 将表与 Sequelize 关联起来

转载 作者:行者123 更新时间:2023-12-03 22:19:28 24 4
gpt4 key购买 nike

我试图以这样的方式关联表:

  • 一个组有很多文档
  • 一个文档属于一个组
  • 一个组属于一个用户
  • 一个用户有很多组

  • 当我尝试列出包括“用户”在内的“组”表中的所有内容时,会引发错误,指出用户未与组关联。

    我的模型:

    Document.js


    const Document = conn.define('document', {
    title: {
    type: Sequelize.TEXT,
    allowNull: false
    },
    content: {
    type: Sequelize.TEXT,
    allowNull: false
    },
    footer: {
    type: Sequelize.TEXT,
    }

    })

    Document.sync()
    Document.associate = (models) => {
    Document.belongsTo(models.Group, {foreignKey: 'groupId', as: 'Group'})
    }

    module.exports = Document

    Group.js


    const Group = conn.define('group', {
    name: {
    type: Sequelize.STRING,
    allowNull: false
    },
    })

    Group.sync()
    Group.associate = (models) => {
    Group.hasMany(models.Document, {foreignKey: 'groupId', as: 'Document'})
    Group.belongsTo(models.User, {foreignKey: 'userId', as: 'User'})
    }

    module.exports = Group

    User.js


    const User = conn.define('user', {
    firstName: {
    type: Sequelize.STRING,
    allowNull: false
    },
    lastName: {
    type: Sequelize.STRING,
    allowNull: false
    },
    email: {
    type: Sequelize.STRING,
    },
    password: {
    type: Sequelize.STRING
    },
    })

    User.sync()
    User.associate = (models) => {
    User.hasMany(models.Group, {foreignKey: 'groupId', as: 'Group'})
    }

    module.exports = User

    最佳答案

    我在您的代码中看到一个错误。您应该为一对多关系使用相同的外键名称。否则,您的数据库中将有两个不同的列。
    在这里您应该使用 userId 作为外键。 Sequelize 在“belongsTo”模型中创建 id 列。因此,如果您像这样使用它,则 Group 模型中将有一个 userId:

    User.hasMany(models.Group, {foreignKey: 'userId', as: 'Group'});
    Group.belongsTo(models.User, {foreignKey: 'userId', as: 'User'});
    也尽量不要在模型文件中创建关联。考虑使用 index.js 文件,您可以在其中创建所有关联。
    src
    app.js
    models
    index.js
    user.js
    group.js
    document.js
    将模型定义保存在他们的文件中。导出创建的模型类。将它们包含在您的 index.js 文件中。创建必要的关联并再次导出它们。
    源代码/模型/index.js
    const User = require('./user');
    const Group = require('./group');
    const Document = require('./document');

    User.hasMany(models.Group, {foreignKey: 'userId', as: 'Group'});
    Group.belongsTo(models.User, {foreignKey: 'userId', as: 'User'});

    // Define what associations you need.

    module.exports = {
    User,
    Group,
    Document
    };

    关于node.js - Node - 将表与 Sequelize 关联起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62363328/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com