Sequelize - 要定义外键,我应该使用references 还是belongsTo?或两者?

yak*_*you 5 node.js express sequelize.js

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

首先,使用references像:

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

其次,使用belongsTo方法:

Foo.belongsTo(Bar, { foreignKey: 'bar_id', targetKey: 'id' });
Run Code Online (Sandbox Code Playgroud)

那么当我在模型中定义外键时,我应该使用其中之一吗?或两者?

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

小智 4

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

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

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

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