Coffee11C
Convex Community2y ago
2 replies
Coffee11

Null user in convex function when using fetchQuery

Does ctx.auth only works with client components? I'm using clerkjs

Clerkjs middleware
import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server';

const isPublicRoute = createRouteMatcher(['/sign-in(.*)', '/sign-up(.*)']);

export default clerkMiddleware(
  (auth, request) => {
    if (!isPublicRoute(request)) {
      auth().protect();
    }
  },
  {
    debug: false,
  }
);

export const config = {
  matcher: ['/((?!.*\\..*|_next).*)', '/', '/(api|trpc)(.*)'],
};


SSR

  const convexUser = await fetchQuery(api.users.getUser, {
    clerkId: clerkUserId!,
  });



Convex function
export const getUser = query({
  args: {
    clerkId: v.string(),
  },
  handler: async (ctx, args) => {
    const identity = await ctx.auth.getUserIdentity();

    // This is null
    console.log(identity);

    return await ctx.db
      .query('users')
      .filter((q) => q.eq(q.field('clerkId'), args.clerkId))
      .first();
  },
});
Was this page helpful?