Sequelize - 我必须在模型和查询中指定 "as" 吗?
Sequelize - do I have to specify "as" in both model and query?
这似乎是多余的,并迫使我在两个位置对相同的字符串进行硬编码 - 或者将其粘贴到必须传递的变量中。无论哪种方式,如果我在我的模型中指定关系的“as”,为什么我必须稍后在查询时使用相同的“as”调用它属性?
我的关系:
organization.hasMany(client, { as: "Clients", foreignKey: "organization_id" });
client.belongsTo(organization, { as: "AuthOrganization", foreignKey: "organization_id" });
查询:
let data = await client.findOne({
include: [{ model: organization, as: "AuthOrganization" }]
}, { raw: true });
如果我省略相同的“as”属性,系统会抛出一个错误提示我将它放在那里。我是 Sequelize 的新手,但似乎是这样,因为“as”可用于识别不明确的关系。但是,您在模型中设置的值似乎是一个合理的默认值,不是吗?
我真正想要的是这个,当我写查询时:
let data = await client.findOne({
include: organization
}, { raw: true });
我这样做只是为了避免混合函数名称中的自动下划线。我无法忍受这个令人讨厌的“addAuth_organization”函数名,而且我也找不到解决这个问题的另一种方法。
我会认为这是“是”。
这似乎是多余的,并迫使我在两个位置对相同的字符串进行硬编码 - 或者将其粘贴到必须传递的变量中。无论哪种方式,如果我在我的模型中指定关系的“as”,为什么我必须稍后在查询时使用相同的“as”调用它属性?
我的关系:
organization.hasMany(client, { as: "Clients", foreignKey: "organization_id" });
client.belongsTo(organization, { as: "AuthOrganization", foreignKey: "organization_id" });
查询:
let data = await client.findOne({
include: [{ model: organization, as: "AuthOrganization" }]
}, { raw: true });
如果我省略相同的“as”属性,系统会抛出一个错误提示我将它放在那里。我是 Sequelize 的新手,但似乎是这样,因为“as”可用于识别不明确的关系。但是,您在模型中设置的值似乎是一个合理的默认值,不是吗?
我真正想要的是这个,当我写查询时:
let data = await client.findOne({
include: organization
}, { raw: true });
我这样做只是为了避免混合函数名称中的自动下划线。我无法忍受这个令人讨厌的“addAuth_organization”函数名,而且我也找不到解决这个问题的另一种方法。
我会认为这是“是”。