I have a question as to how I can recover a relationship within another relationship using SEQUELIZE in NODEJS.
Example, in Laravel PHP I can do something like this:
Model::with(['character.genetic'])->get()
That way it will bring the relationship of "Character" and the relationship that "Character has with Genetic", however, how can I do that in NODE?
Below is an example of my code in NodeJS:
let data = await PlayerCharacter.findAll({
include: ['character.genetic'], ///dont works
where: {
playerId: req.playerId,
},
order: [
['levelId', 'desc']
]
});
My class Main
import Sequelize from 'sequelize';
import database from '../database';
const PlayerCharacter = database.define('player_characters', {
.....
characterId: {
type: Sequelize.BIGINT,
allowNull: false,
},
.....
});
/**
* Relationships
*/
PlayerCharacter.belongsTo(Character, {
foreignKey: 'characterId',
as: 'character',
});
export default PlayerCharacter;
My Class Character
import Sequelize from 'sequelize';
import database from '../database';
const Character = database.define('characters', {
...
geneticId: {
type: Sequelize.INTEGER,
allowNull: false,
},
....
}, {
timestamps: false,
});
/**
* Relationships
*/
Character.hasOne(CharacterGenetic, {
foreignKey: 'geneticId',
as: 'genetic',
});
export default Character;
You should use nested include option like this:
let data = await PlayerCharacter.findAll({
include: [{
model: Character,
as: 'character',
include: [{
model: CharacterGenetic,
as: 'genetic'
}
]
}
],
where: {
playerId: req.playerId,
},
order: [
['levelId', 'desc']
]
});