User Pagination and Count
This is applicable for supertokens core version >= 3.5. For older core versions, please visit your backend SDK's reference docs.
This feature allows you to loop through (on your backend) all the users in your app. It also allows you to get the number of users.
Loop through users in your app
Newest First
import { getUsersNewestFirst } from "supertokens-node";
async function getUsers() {
// get the latest 100 users
let usersResponse = await getUsersNewestFirst({
tenantId: "public"
});
let users = usersResponse.users;
let nextPaginationToken = usersResponse.nextPaginationToken;
// get the next 200 users
usersResponse = await getUsersNewestFirst({
tenantId: "public",
limit: 200,
paginationToken: nextPaginationToken,
})
users = usersResponse.users;
nextPaginationToken = usersResponse.nextPaginationToken;
// get for specific recipes
usersResponse = await getUsersNewestFirst({
tenantId: "public",
limit: 200,
paginationToken: nextPaginationToken,
// only get for those users who signed up with
includeRecipeIds: [""],
})
users = usersResponse.users;
nextPaginationToken = usersResponse.nextPaginationToken;
}
Oldest First
import { getUsersOldestFirst } from "supertokens-node";
async function getUsers() {
// get the latest 100 users
let usersResponse = await getUsersOldestFirst({
tenantId: "public"
});
let users = usersResponse.users;
let nextPaginationToken = usersResponse.nextPaginationToken;
// get the next oldest 200 users
usersResponse = await getUsersOldestFirst({
tenantId: "public",
limit: 200,
paginationToken: nextPaginationToken,
});
users = usersResponse.users;
nextPaginationToken = usersResponse.nextPaginationToken;
// get for specific recipes
usersResponse = await getUsersOldestFirst({
tenantId: "public",
limit: 200,
paginationToken: nextPaginationToken,
// only get for those users who signed up with
includeRecipeIds: [""]
});
users = usersResponse.users;
nextPaginationToken = usersResponse.nextPaginationToken;
}
- If the
nextPaginationToken
isundefined
, then there are no more users to loop through. - If there are no users in your app, then
nextPaginationToken
will beundefined
andusers
will be an empty array - Each element in the
users
array is according to the output of the core API as shown here.
Notice that we pass in the tenantId as "public"
. This means that the functions above will loop through the users of the public
tenantId. If you want to loop through other tenant IDs, you can pass in the tenant ID string to the function call.
This also implies that there is no way to loop through all users across all tenants in one go. If you want to do this, you will have to loop through each tenant one by one.
Get the number of users in your app
import {getUserCount} from "supertokens-node";
async function getCount() {
let count = await getUserCount()
}
By default, the getUserCount function will return the number of users across all tenants. If you want to get the number of users for a specific tenant, you can pass in the tenant ID string to the function call.