93

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) { ...
borisdiakur
  • 10,387
  • 7
  • 68
  • 100

4 Answers4

149

Something like this should work

foo.findAll({
    where      : where,
    attributes : attributes,
    include    : [{ model: bar, attributes: attributes}]
}).success(function (result) {
Jan Aagaard Meier
  • 28,078
  • 8
  • 95
  • 66
17

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']
    }
})
Sanket Vanani
  • 244
  • 3
  • 7
1
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)
});
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
kush
  • 595
  • 5
  • 7
-1

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

Model.find().select('attr1 attr2 attr3')
Saifullah
  • 11
  • 9