sequelize 1.6 has the following in the changelog:
[FEATURE] added association prefetching for find and findAll
The question is HOW?
I have the following models defined:
var self = {
Medium: client.define("Medium", {
name: Sequelize.STRING,
description: Sequelize.TEXT
},
User: client.define("User", {
firstName: Sequelize.STRING,
lastName: Sequelize.STRING,
email: Sequelize.STRING,
aboutArt: Sequelize.TEXT,
bio: Sequelize.TEXT,
password: Sequelize.STRING,
description: Sequelize.TEXT
}
};
self.User.hasMany(self.Medium, { as: 'Media' });
self.Medium.hasMany(self.User);
for(var key in self){
var model = self[key];
model.sync();
}
later when i fetch a user like this:
User.find(id)
.success(function(record) {
//record has no media!
})
the User instance does not have a list media. How do i auto fetch associations?
BTW: Now that Sequelize 1.6.0 is out, the syntax for the eager loading has slightly changed:
User.find({ where: {id: id}, include: [Media] }).success(function(user){
console.log(user.media)
})
So you'll have to pass the Model instead of the Model's name to the include statement.
The answer is currently only available inside the code, the tests and ... my head :D
User.find({ where: {id: id}, include: ['Media'] }).success(function(user){
console.log(user.media)
})
The reason for the not yet available documentation iiiiiis the fact, that the release is currently an alpha version.
sdepold actually wrote the code, but I believe the syntax he settled on for include is:
User.find({ where: {id: id}, include: ['Media'] }).success(function(user){
console.log(user.media)
})