borisdiakur
borisdiakur

Reputation: 12072

How to use an include with attributes with sequelize?

Any idea how to use an include with attributes (when you need to include only specific fields of the included table) with sequelize?

Currently I have this (but it doesn't work as expected):

var attributes = ['id', 'name', 'bar.version', ['bar.last_modified', 'changed']];
foo.findAll({
    where      : where,
    attributes : attributes,
    include    : [bar]
}).success(function (result) { ...

Upvotes: 98

Views: 170756

Answers (4)

kush
kush

Reputation: 645

Course.findAll({where: {
         status:responseCode.STATUS_ACTIVE
     }, attributes:['id','course_title','course_slug','age_group','image','class_duration','no_of_classes','is_course_upcoming'],
     order:[['is_sorting','ASC']],
    include:{model:Section,attributes:['id','title','course_id','start_date','end_date']},
}).then(course_detail =>{
    result(null,course_detail);
}).catch(err =>{
    console.log(err)
});

Upvotes: 1

Saifullah
Saifullah

Reputation: 9

Use the select without hyphen (-) only blank spaces like this.

Model.find().select('attr1 attr2 attr3')

Upvotes: -2

Sanket Vanani
Sanket Vanani

Reputation: 536

We can do something like that for exclude or include specific attribute with sequelize in Node.js.

Payment.findAll({
    where: {
        DairyId: req.query.dairyid
    },
    attributes: {
        exclude: ['createdAt', 'updatedAt']
    },
    include: {
        model: Customer,
        attributes:['customerName', 'phoneNumber']
    }
})

Upvotes: 20

Jan Aagaard Meier
Jan Aagaard Meier

Reputation: 28788

Something like this should work

foo.findAll({
    where      : where,
    attributes : attributes,
    include    : [{ model: bar, attributes: attributes}]
}).success(function (result) {

Upvotes: 160

Related Questions