コンテンツにスキップ

MemberListPager

MemberListPager は、Client.getCommunityMemberList() のカーソルページネーションを自動的に追跡し、for await...of で全メンバーを順に取得できる非同期ジェネレーターを提供します。

追加インストールは不要です。mixi2-js に同梱されています。

// ESM
import { MemberListPager } from 'mixi2-js/helpers';
// CJS
const { MemberListPager } = require('mixi2-js/helpers');

getCommunityMemberList はカーソルベースのページネーションで結果を返します。手動でカーソルを管理するのは冗長です:

// ❌ 手動でページネーション
let cursor: string | undefined;
const allMembers: User[] = [];
do {
const result = await client.getCommunityMemberList({ communityId, paginationCursor: cursor });
allMembers.push(...result.members);
cursor = result.nextPaginationCursor;
} while (cursor);

MemberListPager を使えば for await で自然に書けます:

// ✅ シンプルに全件取得
const pager = new MemberListPager(client);
for await (const member of pager.iterate({ communityId })) {
console.log(member.displayName);
}
import { Client } from 'mixi2-js';
import { MemberListPager } from 'mixi2-js/helpers';
const pager = new MemberListPager(client);
// 全メンバーをイテレート
for await (const member of pager.iterate({ communityId: 'community-id' })) {
console.log(member.userId, member.displayName);
}
const members: User[] = [];
for await (const member of pager.iterate({ communityId: 'community-id' })) {
members.push(member);
}
console.log(`メンバー数: ${members.length}`);

大量メンバーのコミュニティで一部だけ取得したい場合は maxPages オプションを使います。

// 最初の 3 ページ分だけ取得
for await (const member of pager.iterate(
{ communityId: 'community-id' },
{ maxPages: 3 }
)) {
console.log(member.displayName);
}

初回取得時のカーソルを保存しておき、次回のリクエストに渡すことで途中から再開できます。

// 最初の 1 ページを手動で取得してカーソルを保存
const first = await client.getCommunityMemberList({ communityId: 'community-id' });
const savedCursor = first.nextPaginationCursor;
// 後で続きから再開
if (savedCursor) {
for await (const member of pager.iterate({ communityId: 'community-id', paginationCursor: savedCursor })) {
console.log(member.displayName);
}
}
new MemberListPager(client: Client)
引数説明
clientClientAPI クライアント
iterate(
request: GetCommunityMemberListRequest,
options?: MemberListPagerOptions
): AsyncGenerator<User>
引数説明
requestGetCommunityMemberListRequestコミュニティ ID と初期カーソル
optionsMemberListPagerOptionsオプション(maxPages など)

MemberListPagerOptions

フィールドデフォルト説明
maxPagesnumber無制限取得する最大ページ数