【问题标题】:Sequelize - To define foreign key, should I use references or belongsTo? or both?Sequelize - 要定义外键,我应该使用引用还是 belongsTo?或两者?
【发布时间】:2019-01-22 16:55:02
【问题描述】:

据我所知,在sequelize中,定义外键有两种方式。

首先,使用referenceslike:

sequelize.define('foo', {
    bar_id: {
        type: 'blahblah',
        references: {
           model: Bar,
           key: 'id'
        }
    }
});

其次,使用belongsTo方法:

Foo.belongsTo(Bar, { foreignKey: 'bar_id', targetKey: 'id' });

那么当我在模型中定义外键时,我应该使用其中一个吗?还是两者都有?

  • 如果我应该同时使用它们,它们之间有什么区别?
  • 或者如果belongsTo足以定义外键,我可以删除sequelize.define('foo', {...})中的bar_id定义吗?

【问题讨论】:

    标签: node.js express sequelize.js


    【解决方案1】:

    根据他们的文档,如果您不想创建关联和约束,可以使用引用创建 FK。否则使用 HasOne、HasMany 或 BelongsTo。

    http://docs.sequelizejs.com/manual/tutorial/associations.html#enforcing-a-foreign-key-reference-without-constraints

    我个人只使用了 HasOne、HasMany 和 BelongsTo 方法。

    在上面的链接中查看有关关联的整个部分可能是个好主意。

    【讨论】:

    • 你的意思是,我可以使用其中一个,如果我使用像belongsTo 这样的方法,我不必为外键定义像bar_id 这样的属性?
    • 是的,如果你使用 BelongsTo 等,Sequelize 会为你创建外键字段和索引,并且这些字段会在模型中。
    • ...请再次查看我发布的文档链接 - 他们的文档非常好,其中详细介绍了各种选项,可让您根据需要或喜欢控制事物。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2017-01-04
    • 2016-03-14
    • 2015-07-15
    • 2015-01-13
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多