Sequelize 仅选择选定的属性

Posted

技术标签:

【中文标题】Sequelize 仅选择选定的属性【英文标题】:Sequelize select only chosen attributes 【发布时间】:2018-08-09 16:11:57 【问题描述】:

我正在使用 mysql 数据库,当我在做的时候:

models.modelA.findAll(
            attributes: [
               ['modelA.id','id']
            ],
            raw: true,
            include:
                [
                    
                        model: models.modelB,
                        required: true
                    
                ]

        ).then(function (tenants) 

        );

尽管我只选择了id,Sequelize 也在从相关表中检索所有属性,所以我得到了 id, ... All attributes here。

如何防止这种情况发生?有时我只想选择 2/3 列,而 Sequelize 总是选择所有无效的列。

【问题讨论】:

【参考方案1】:

您可以执行以下操作

models.modelA.findAll(
        attributes: [
           'id'
        ],
        raw: true,
        include:
            [
                
                    model: models.modelB,
                    attributes: ['fieldName1', 'fieldName2'], // Add column names here inside attributes array.
                    required: true
                
            ]

    ).then(function (tenants) 

    );

【讨论】:

【参考方案2】:

您可以尝试发送空数组作为属性来排除它们:

models.modelA.findAll(
            attributes: [
               ['modelA.id','id']
            ],
            raw: true,
            include:
                [
                    
                        model: models.modelB,
                        attributes: [],
                        required: true
                    
                ]

        ).then(function (tenants) 

        );

【讨论】:

以上是关于Sequelize 仅选择选定的属性的主要内容,如果未能解决你的问题,请参考以下文章

使用 Typescript 在 Sequelize 模型中创建实例方法

更改数据库模型 - Sequelize

了解 Sequelize 中的关联

在 Sequelize 中创建对象字段

使用把手显示来自 sequelize 查询的值

使用 Sequelize.js 进入包含模型