0
我的代碼表:Sequelize加入非主鍵
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);
})
})
}
當我使用,我得到的「未處理拒絕SequelizeDatabaseError:失蹤子句的表項‘用戶’,」我不知道是什麼手段。
我已經嘗試使用
where:{
id: UserMail.from_user_id;
}
但每次執行查詢時,它具有「用戶」,「ID」 = NULL所以它永遠不會返回結果。我也試過各種各樣的變化,以使它不是NULL,但沒有我試過的變量。
我只想添加一列到查詢中,用戶名從Users表中的UserMail表中的from_user_id在Users表中。這聽起來很簡單,但我不能爲我的生活似乎做到這一點。
很簡單隻要使用
include:{[User]}
,這將包括在用戶主鍵等於UserMail主鍵加入主鍵的表,但是這不是我想要的。我希望它在不是主鍵的UserMail列上。