Sequelize仅选择所选属性

时间:2018-03-01 14:50:45

标签: mysql express select model sequelize.js

我正在使用MySQL数据库:

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

        }).then(function (tenants) {

        });

尽管如此,我只选择了id,Sequelize正在从相关表中检索所有属性,因此我获得了{id,...此处的所有属性}

我怎么能阻止这个?有时我想只选择2/3列,而Sequelize总是选择所有不高效的列。

2 个答案:

答案 0 :(得分:4)

您可以执行以下操作

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) {

    });

答案 1 :(得分:0)

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

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

        }).then(function (tenants) {

        });