【发布时间】:2019-12-20 00:47:30
【问题描述】:
我想使用情节表的年份列在进度表的位置中使用,而无需执行两个查询。 Sequelize 可以做到这一点吗?
这是我正在运行的查询。目前它使用的是静态年份,我希望它根据剧集年份动态生成。
// Associations
models.Episode.belongsTo(models.Unit, {foreignKey: 'unitId', targetKey: 'unitId'})
models.Unit.belongsToMany(models.Badge, {through: 'unitToBadge'})
models.Badge.belongsToMany(models.Unit, {through: 'unitToBadge'})
models.Badge.hasOne(models.Progress, {foreignKey: 'badgeId', targetKey: 'badgeId'})
// Get Episode->Unit->UnitToBadge->Badge->Progress from episodeId
const episode = await models.Episode.findOne({
where: {
episodeId: episodeId,
unitId: {
[Sequelize.Op.not]: null
}
},
include: [
{
model: models.Unit,
include: [
{
model: models.Badge,
include: [
{
model: models.Progress,
where: {
userId: userId,
complete: false,
year: 2019 // TODO need to get the year dynamicly from episode
}
}
]
}
]
}
]
})
这是剧集表模型
const episode = (sequelize, DataTypes) => {
const Episode = sequelize.define('episode', {
episodeId: {
type: DataTypes.INTEGER,
unique: true
},
year: {
type: DataTypes.INTEGER,
},
unitId: {
type: DataTypes.INTEGER
},
updatedAt: {
type: DataTypes.DATE(6),
allowNull: true,
defaultValue: sequelize.fn('NOW')
},
createdAt: {
type: DataTypes.DATE(6),
allowNull: true,
defaultValue: sequelize.fn('NOW')
}
}, {
indexes: [
{
unique: false,
fields: ['updatedAt']
}
]
})
return Episode
}
export default episode;
【问题讨论】: