我正在尝试一种功能,以吸引所有喜欢我但不喜欢我的用户,就像在Tinder中一样。我的数据库架构如下:
const User = require('./user/model')
const Favorite = require('./favorite/model')
Favorite.belongsTo(User, {
as: 'User',
foreignKey: 'UserId'
})
Favorite.belongsTo(User, {
as: 'FavoritedUser',
foreignKey: 'Favorited'
})
我最喜欢的表如下:
const Model = instance.define('Favorite', {
UserId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'Users',
key: 'id'
},
unique: 'favorite-uniqueness'
},
Favorited: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'Users',
key: 'id'
},
unique: 'favorite-uniqueness'
},
type: {
type: Sequelize.STRING,
allowNull: false,
defaultValue: 'normal'
}
}, { timestamps: true, paranoid: true })
UserId属于收藏Favorited
用户ID的用户。
让我们考虑一下我的用户ID为1的表结构
用户ID偏爱
我喜欢ID为3的用户,她也喜欢我。因此,我希望查询提供UserId 2(表明她不喜欢我,即使我喜欢他)。
我想出的是:
router.get('/liked-me', isAuthenticated, ({ user }) => {
return Favorite.findAll({
where: {
Favorited: user.id
},
include: [
{
model: User,
as: 'User'
}
]
})
});
感谢您的帮助!