GasaczzG
Convex Community16mo ago
5 replies
Gasaczz

Getting current user id in mutation

Hi!
I'm trying to post a comment related to defined item. I pass itemId as an argument but i want to use current user's id as a comment author.
I've configured simple password login. I could see in database that fields i used in withIndex are equal but i couldnt pass identity.subject as is as it is not Id<users> field. thus query returns empty array.

How to do this correctly? Should I use users collection instead of authAccounts?

export const add = mutation({
  args: {
    text: v.string(),
    itemId: v.id('items'),
  },
  handler: async (ctx, args) => {
    const identity = await ctx.auth.getUserIdentity();
    if (!identity) {
      throw new Error('Not authenticated');
    }

    const user = await ctx.db
      .query('authAccounts')
      .withIndex('userIdAndProvider', (q) => q.eq('userId', identity.subject as Id<'users'>))
      .first();
    if (!user) {
      throw new Error('User not found');
    }

    const comment = await ctx.db.insert('comments', {
      text: args.text,
      itemId: args.itemId,
      userId: user.userId,
      createdAt: Date.now(),
    });

    return comment;
  },
});
Was this page helpful?