primaire Mon code:Sequelize tables de jointure sur la non clé
User.hasMany(UserMail, {foreignKey:'to_user_id', sourceKey:'id'});
User.hasMany(UserMail, {foreignKey:'from_user_id', sourceKey:'id'});
UserMail.belongsTo(User, {foreignKey: 'from_user_id'})
UserMail.belongsTo(User, {foreignKey: 'to_user_id'})
function getUserMail(req,res){
// Authenticate
jwt.verify(req.headers.jwt, process.env.JWT_KEY,function(err,decoded) {
if (err) {
return res.status(401).send("Invalid token");
}
let id = decoded.id;
return UserMail.findAll({
where: {
to_user_id: id,
to_user_deleted: false
},
include:{
model: User,
//This is where the error is
on:{
id: Sequelize.where(Sequelize.col("User.id"), "=",Sequelize.col("UserMail.from_user_id"))
},
attributes:['username']
},
// attributes:[], // TODO Set what columns are needed
order:[['id', 'DESC']]
}).then(mail=> {
return res.status(200).send(mail);
})
})
}
Quand j'utilise que je reçois « rejet Unhandled SequelizeDatabaseError: manque entrée de gamme de la clause pour la table « Utilisateur » » et je ne suis pas sûr de ce que veux dire.
J'ai essayé d'utiliser
where:{
id: UserMail.from_user_id;
}
Mais chaque fois que la requête est exécutée, il a « Utilisateur ». « Id » = NULL il ne retourne jamais les résultats. J'ai également essayé toutes sortes de variations pour ne pas être NULL mais aucune variable que j'ai essayée fonctionne. Je veux juste ajouter une seule colonne à la requête, nom d'utilisateur de la table Users où from_user_id dans la table UserMail se trouve dans la table Users. Cela semble si simple, mais je ne peux pas pour la vie de moi semble le faire.
Il est simple à se joindre à la table sur les clés primaires en utilisant simplement
include:{[User]}
et comprendra où la clé primaire de l'utilisateur est égale à la clé primaire UserMail, mais ce n'est pas ce que je veux. Je le veux sur une colonne UserMail qui n'est pas la clé primaire.