我一直在尝试使用魔术函数,但是找不到。
我没有在模型上使用别名,但是在我无法通过假设名称基于我用来创建它们的模型名称来找到魔术函数之后,我仍然尝试为模型添加别名,找不到魔术函数,我认为它们是基于别名的。
现在我有点迷路了。如何检查模型实例以检查魔术函数是什么?
我的型号名称不是简单的单词。一个是DaUser(表是da_users)。另一个是DaOrganization(表是da_organizations)。因此,我尝试创建一个多对多关系,并使用这两个关系集创建了一个新模型DaUserOrg。
DaUser.belongsToMany(DaOrganization, {
through: DaUserOrg,
as: { singular: 'da_organization', plural: 'da_organizations' },
foreignKey: 'da_user_id',
otherKey: 'da_organization_id'
});
DaOrganization.belongsToMany(DaUser, {
through: DaUserOrg,
as: { singular: 'da_user', plural: 'da_users' },
foreignKey: 'da_organization_id',
otherKey: 'da_user_id'
});
之前,只有through
。我添加了其余部分,因为找不到魔术功能。
我尝试了“ addDaOrganizations”,“ setDaOrganizations”,“ addDaOrganization” ..都找不到。
因为我在这个相当大的代码库中。添加别名是一大举措。我必须更新包含本组织的所有地方,因为当您包含带有别名的模型时,sequelize要求使用“ as”。这使人头疼。
有人知道为什么这对我不起作用吗?
我想稍后我将尝试使用简单的英语单词作为别名,但是感觉我真的只是在这里错过了一些非常基本的内容。
答案 0 :(得分:1)
最后,我通过检查Sequelize的源代码使它起作用。
我还删除了别名,这使我可以进行更多工作来更新所有现有代码。
因此,正如我想象的那样,它不仅仅涉及一个单词以上的英语单词的CamelCase转换。所以我的魔术功能是
addDa_organizations
setDa_organizations
我想添加别名应该可以,因此您可以使用简单的单词来引用您的实体。