gpt4 book ai didi

javascript - 查询联结表而不在 Sequelize 中获取两个关联

转载 作者:IT老高 更新时间:2023-10-28 23:26:54 24 4
gpt4 key购买 nike

考虑以下模型:

var User = sequelize.define('User', {
_id:{
type: Datatypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
name: Datatypes.STRING,
email:{
type: Datatypes.STRING,
unique: {
msg: 'Email Taken'
},
validate: {
isEmail: true
}
}
});

var Location= sequelize.define('Location', {
_id:{
type: Datatypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
name: Datatypes.STRING,
address: type: Datatypes.STRING
});

Location.belongsToMany(User, {through: 'UserLocation'});
User.belongsToMany(Location, {through: 'UserLocation'});

有没有办法在 UserLocation 表中查询特定的UserId 并获取相应的Locations。比如:

SELECT * FROM Locations AS l INNER JOIN UserLocation AS ul ON ul.LocationId = l._id WHERE ul.UserId = 8

据我所知,您可以执行以下操作:

Location.findAll({
include: [{
model: User,
where: {
_id: req.user._id
}
}]
}).then( loc => {
console.log(loc);
});

但是,这将返回 LocationsUserLocation 联结点和 User,它正在加入 User 表当我不需要任何用户信息并且只需要该用户的 Locations 时。我所做的是工作,但是,对联结表的查询是首选,而不是 User 表上的查找。

我希望这很清楚。提前致谢。

编辑

我实际上最终以不同的方式实现了这一点。但是,我仍然会将此作为一个问题,因为这应该是可能的。

最佳答案

将联结表声明为单独的类,类似这样

var UserLocation = sequelize.define('UserLocation', {
//you can define additional junction props here
});

User.belongsToMany(Location, {through: 'UserLocation', foreignKey: 'user_id'});
Location.belongsToMany(User, {through: 'UserLocation', foreignKey: 'location_id'});

然后您可以像任何其他模型一样查询联结表。

关于javascript - 查询联结表而不在 Sequelize 中获取两个关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36396878/

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