gpt4 book ai didi

express - sequelize 中的多对多关系不能使用包括?

转载 作者:行者123 更新时间:2023-12-03 22:25:32 26 4
gpt4 key购买 nike

所以我有一个项目,其中用户可以加入每周阶梯,所以我通过名为 UserLadder 的第三个模型在两个字段之间建立了一个属于多对关系的关系,我还添加了一个额外的字段来跟踪这个阶梯上的用户点。
基本上现在在我的 express 应用程序中,我需要一个通过锦标赛购买用户及其积分的路线,所以我写了这个:

 const leaderboard = await UserLadder.findAll({
where: {
weeklyLadderId: req.params.id,
},
limit: req.params.playersNumber,
order: [['userPoints', 'DESC']],
});

res.json(leaderboard);
它的工作原理是它确实向我展示了这场比赛中的每个人,并根据他们的分数对他们进行了排序,但问题是用户显示的只是一个 userId 字段,我想使用 Include 急切地加载它,但它说没有关系介于用户模型和用户阶梯模型之间。
我做的临时解决方案是:
const ladder = await WeeklyLadder.findByPk(req.params.id);
const users = await ladder.getUsers({
attributes: ['displayName'],
});
res.json(users);
我通过 Id 获得了锦标赛,然后在那里获得了锦标赛的用户,但这是一个 2 步过程,我知道有一种方法可以通过第三个 UserLadder 模型来完成,我只是想不通
有任何想法吗?
联系方式:
const User = require('./models/User');
const WeeklyLadder = require('./models/WeeklyLadder');
const Game = require('./models/Game');
const UserLadder = require('./models/UserLadder');

User.belongsToMany(WeeklyLadder, {
through: UserLadder,
});

WeeklyLadder.belongsToMany(User, {
through: UserLadder,
});

Game.hasMany(WeeklyLadder);

WeeklyLadder.belongsTo(Game);
enter image description here

最佳答案

您只需执行一个请求:

db.User.findOne({
include: [
{
model: db.WeeklyLadder,
as: "WeeklyLadder",
where: {
title: "tournament 1", // where on WeeklyLadder
},
},
],
})
在您的模型上:
User.associate = (models) => {
models.User.belongsToMany(models.WeeklyLadder, {
as: "WeeklyLadder",
through: "UserWeeklyLadder",
foreignKey: "fk_user_id",
otherKey: "fk_weekly_ladder_id",
})
}

...

WeeklyLadder.associate = (models) => {
models.WeeklyLadder.belongsToMany(models.User, {
as: "User",
through: "UserWeeklyLadder",
foreignKey: "fk_weekly_ladder_id",
otherKey: "fk_user_id",
})
}

关于express - sequelize 中的多对多关系不能使用包括?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62584139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com