我要实现的目标
查找经过身份验证的用户团队中的所有玩家。
问题出在哪里?
无法在 const findUsers = await User.findAll where 子句中使用返回的 json,我不确定这是否是正确的方法。
数据库表
用户表:id(PK(等
团队:id(PK(等
团队用户: id , TeamID (外键( , 用户 ID (外键( 等
从 FindTeamUsers (Var ob( 返回 json,这是正确的
[{"id":2,"TeamID":1,"UserID":1,"createdAt":"2019-08-09","updatedAt":"2019-08-09"},{"id":3,"TeamID":1,"UserID":3,"createdAt":"2019-08-09","updatedAt":"2019-08-09"},{"id":76,"TeamID":1,"UserID":5,"createdAt":"2019-08-22","updatedAt":"2019-08-22"}]
以下是我目前使用Nodejs,ExpressJS使用的路由
router.get('/Team', auth, async function(req, res) {
// -- Get the Users team that is currently Authenticated (req.user.id (auth) )
const findTeam = await TeamUsers.findOne({
where: {
UserID: req.user.id
}
});
//If the User has a team
if (findTeam) {
// -- Get the players Team Mates who have the matching TeamID
const findTeamUsers = await TeamUsers.findAll({
where: {
TeamID: findTeam.TeamID
}
});
//Store the object and Display in JSON FORMAT
var ob = JSON.stringify(findTeamUsers);
console.log(ob);
if (!findTeamUsers) {
console.log('error');
} else {
//find the Users Details From the Users Table Model
//findTeamUsers - Is an array of each record found from const findTeamUsers = await TeamUsers.findAll
const findUsers = await User.findAll({
where: {
id: ob.UserID
}
});
res.status(200).json(findUsers);
}
}
});
您的ob
是string
,因此ob.UserID
undefined
。findTeamUsers
(FindTeamUsers
结果(是一个对象数组,所以findTeamUsers.UserID
也会undefined
。(数组findTeamUsers
没有属性UserID
(。
您可以传递 UserIDarray
来搜索多个元素(如果要查找数组中的所有UserID
(:
User.findAll({
where: {
id: findTeamUsers.map(o => o.UserID)
}
})