5

私は、sequelize を介して postgres db を介して Feathersjs/nodejs を使用してきました。私のデータベースには、Users テーブルと Events テーブルがあります。それらは2倍の関係にあります:

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'
});

すべてが正常に機能し、テーブルが作成され、インクルードを使用して、ユーザーをイベント内に参加者として取得します。問題は関連付けによるクエリです。現在のユーザーのイベントを取得しようとしているので、作成者が現在のユーザーであるイベントと、参加者の 1 人が現在のユーザーであるイベントが必要です。問題は、「現在のユーザーが参加者の 1 人であるクエリ」の 2 番目の部分です。私はこのようなものを期待していました

'api/events?$or[0][creatorId]=currUserId&$or[1][participants][$contains]=currUserId'

しかし、「参加者」などの列が含まれていないため、クエリを実行できません。したがって、今のところ、すべてのイベントを取得し、現在のユーザーのアフター フックでそれらをフィルタリングしていますが、それは間違っているようです。これを行う正しい方法は何ですか?

そして、ユーザーをユーザーに含めて取得することで、ユーザーが参加者の1人であるイベントを取得できることはわかっていますが、そのデータをまとめて並べ替えることができず、個別に並べ替えられ、別の問題がフロントエンドでページネーションを行うことです。

4

2 に答える 2