Sequelize - 我必须在模型和查询中都指定“as”吗?

Posted

技术标签:

【中文标题】Sequelize - 我必须在模型和查询中都指定“as”吗?【英文标题】:Sequelize - do I have to specify "as" in both model and query? 【发布时间】:2022-01-02 22:55:16 【问题描述】:

这似乎是多余的,并迫使我在两个位置对相同的字符串进行硬编码 - 或者将其粘贴在必须传递的变量中。无论哪种方式,如果我在我的模型中指定关系的“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”函数名称,也找不到解决此问题的其他方法。

【问题讨论】:

【参考方案1】:

我会认为这是“是”。 ?

【讨论】:

以上是关于Sequelize - 我必须在模型和查询中都指定“as”吗?的主要内容,如果未能解决你的问题,请参考以下文章

Sequelize 查询中的查询

使用 Sequelize.js 和 PostgreSQL 在关联模型上查询 JSONB 字段

在 sequelize 返回值中删除连接表数据

更改数据库模型 - Sequelize

Sequelize将日期从UTC转换为本地

如何在 Sequelize 中的导入模型中创建自定义方法或函数