我是NodeJS + Sequelize中的新手。 我有一个关于关联的问题。
我有3个型号:
我有两个关联:
ModelA.belongsTo(ModelB, {as: 'myModelB'});
ModelB.belongsTo(ModelC, {as: 'myModelC'});
现在,我得到了ModelA
:
router.get('/', (req, res) => {
ModelA.findAll({ include: [ 'myModelB' ]})
.then(result => {
res.json(result);
})
.catch(err => console.log(err))
});
在响应中,我只有modelB
的信息,而ModelB
没有ModelC
的信息
我的结果:
{
id: 1,
attr1: 'toto',
attr2: 'tata',
myModelB: {
attrB1: 'Hello',
attrB2: 'World',
fk_modelC: 1
}
}
我想要的结果:
{
attr1: 'toto',
attr2: 'tata',
myModelB: {
attrB1: 'Hello',
attrB2: 'World',
fk_modelC: {
attrC1: 'It',
attrC2: 'Works!'
}
}
}
使用ModelC
时如何在ModelB
中加入ModelA
?
答案 0 :(得分:1)
您追求的是:https://sequelize.readthedocs.io/en/latest/docs/models-usage/index.html#nested-eager-loading
也许是这样的:
ModelA.findAll({
include: [{
model: ModelB,
as: 'myModelB',
include: [{
model: ModelC,
as: 'myModelC',
}]
}]
})
.then(result => {
res.json(result);
})
.catch(err => console.log(err))
});
答案 1 :(得分:0)
使用此摘要:
router.get('/', (req, res) => {
ModelA.findAll({
include: {
'myModelB',
include: {
'myModelC'
}
}
})
.then(result => {
res.json(result);
})
.catch(err => console.log(err))
});