我一直在通过 sequelize 在 postgres db 上使用 feathersjs/nodejs。在我的数据库中,我有用户表和事件表。它们有两倍的关系:
events.belongsTo(models.users, {
foreignKey: {
name: 'creatorId',
allowNull: false
},
onDelete: 'CASCADE',
as: 'creator'
});
events.belongsToMany(models.users, {
through: 'event_participants',
as: 'participants',
foreignKey: 'eventId',
otherKey: 'userId'
});
models.users.belongsToMany(events, {
through: 'event_participants',
as: 'events'
});
一切正常,创建了表格,并包括让用户作为参与者参与活动。问题是通过关联查询。我正在尝试为当前用户获取事件,所以我需要创建者是当前用户的事件和参与者之一是当前用户的事件。问题是第二部分“查询当前用户是参与者之一的位置”。我期待这样的事情
'api/events?$or[0][creatorId]=currUserId&$or[1][participants][$contains]=currUserId'
但它不起作用,因为没有包含“参与者”这样的列,所以我无法查询它。所以现在我只是获取所有事件并在后挂钩中为当前用户过滤它们,但这似乎是错误的。这样做的正确方法是什么?
是的,我知道我可以通过将用户包含在用户中并获取他来获取用户是参与者之一的事件,但问题是我无法将这些数据全部排序,它被单独排序,另一个问题是在前端进行分页。