Sequelize.js 这是在Sequelize中定义表关系的正确方法吗?
我发现如果您使用的表不符合它们的约定,那么这些表很长,很难理解 如果我有两张桌子:Sequelize.js 这是在Sequelize中定义表关系的正确方法吗?,sequelize.js,Sequelize.js,我发现如果您使用的表不符合它们的约定,那么这些表很长,很难理解 如果我有两张桌子: people ( people_id - uuid name - text ) parties ( parties_id - uuid people_id - uuid (foreign key) ) 我这样定义我的模型对吗? function getPeople() { let entity = {}; entity['people_id'] = {type: Sequelize
people
(
people_id - uuid
name - text
)
parties
(
parties_id - uuid
people_id - uuid (foreign key)
)
我这样定义我的模型对吗?
function getPeople()
{
let entity = {};
entity['people_id'] = {type: Sequelize.UUID, primaryKey: true, allowNull : false};
entity['name'] = Sequelize.TEXT;
return sequelize.define('dbo.people', entity, options);
}
function getParties()
{
let entity = {};
entity['parties_id'] = {type: Sequelize.UUID, primaryKey: true, allowNull : false};
entity['people_id'] =
{
type: Sequelize.UUID,
references: {model: getPeople(), key: 'people_id', deferrable: Sequelize.Deferrable.INITIALLY_DEFERRED}
};
const parties = sequelize.define('dbo.parties', entity, options);
parties.belongsTo(this.getPeople(), {foreignKey: 'people_id'});
return parties;
}
假设:
- 如果我省略了“belongsTo”部分,那么根据我对文档的理解,它实际上不会是一个关联,因此我无法使用include:[]提取查询中的相关数据
- 如果我省略了“references”部分,那么我就无法指定本地字段名“peopleId”,与约定的“peopleId”不同,也无法设置“delferable”
- 我假设我可以使用getPeople()返回一个用于外键的类,而不必是单例
聚会。findAll(包括人)
-要以其他方式进行,您还需要设置反向关联
如果我省略了“references”部分,那么我就无法指定本地字段名“peopleId”,与约定的“peopleId”不同,也无法设置“delferable”
是的
我假设我可以使用getPeople()返回一个用于外键的类,而不必是单例
如果您有同一模型的多个实例,您可能会遇到一些微妙的问题-一般的模式是在一个单独的文件中定义每个模型,并需要它一次。在需要访问模型的任何地方,都可以从sequelize实例访问模型-请参阅
如果我省略了“belongsTo”部分,那么根据我对文档的理解,它实际上不会是一个关联,因此我无法使用include:[]提取查询中的相关数据
正确-仅使用belongs to,您只能进行聚会。findAll(包括人)
-要以其他方式进行,您还需要设置反向关联
如果我省略了“references”部分,那么我就无法指定本地字段名“peopleId”,与约定的“peopleId”不同,也无法设置“delferable”
是的
我假设我可以使用getPeople()返回一个用于外键的类,而不必是单例
如果您有同一模型的多个实例,您可能会遇到一些微妙的问题-一般的模式是在一个单独的文件中定义每个模型,并需要它一次。无论您在何处需要访问模型,都可以从sequelize实例访问它-请参见,我的意思是,除了singleton之外。在这个类中,我没有找到associate方法中“models”的来源:。它叫Sequelize吗?通过应用程序代码?从index.js中注入,它首先需要所有模型,然后调用
associate
来设置除单例之外的关联,我的意思是。在这个类中,我没有找到associate方法中“models”的来源:。它叫Sequelize吗?通过应用程序代码?从index.js中注入,首先需要所有模型,然后调用associate
来设置关联