Andrew McFinley
Andrew McFinley

Reputation: 131

Sequelize js 'include' and 'raw'

I have a relation between two entites like (every chest has one user)

entities.Chest.belongsTo(entities.User)

i want to retrieve all chests and their users in one query, so i do

entities.Chest.findAll({include:[{model: entities.User}]})

But i prefer to manipulate them as plain objects, i do

entities.Chest.findAll({raw:true, include:[{model: entities.User}]})

And the result does not include users at all, how can i achieve this?

Upvotes: 11

Views: 12985

Answers (2)

Victor Fazer
Victor Fazer

Reputation: 1584

This syntax helps for me. You haven't to iterate your records. Just use nest: true and raw: true in pairs;

entities.Chest.findAll({
    raw:true,
    nest: true,
    include:[entities.User]
})

Upvotes: 13

Rudolf Manusachi
Rudolf Manusachi

Reputation: 2346

as you see, raw has some problems with joins (there is an issue) try just use instance method #toJSON

entities.Chest.findAll({include:[{model: entities.User}]})
  .then(function(chestsSeq){
    var chests = chestsSeq.toJSON(); //same as chestsSeq.get({});
    //do something with raw chests object
  });

Upvotes: 7

Related Questions