如何将 json 对象与 where 子句一起使用?



我要实现的目标

查找经过身份验证的用户团队中的所有玩家。

问题出在哪里?

无法在 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);

}
}
});

您的obstring,因此ob.UserIDundefinedfindTeamUsers(FindTeamUsers结果(是一个对象数组,所以findTeamUsers.UserID也会undefined。(数组findTeamUsers没有属性UserID(。

您可以传递 UserIDarray来搜索多个元素(如果要查找数组中的所有UserID(:

User.findAll({
where: {
id: findTeamUsers.map(o => o.UserID)
}
})

最新更新