valashnezV
Convex Community2y ago
13 replies
valashnez

Help running an internal query

I'm trying to run a query from my Node backend, but Convex doesn't seem to be including my function in its generated output. I've verified npx convex dev is running.

Here's what I'm doing:

In packages/convex-server/convex/server/internal.ts, I define the internalQuery:
export const getLastReadMessageByUserIdAndSectionId = internalQuery({
  args: {
    userId: v.string(),
    sectionId: v.number(),
  },
  handler: async (ctx, { userId, sectionId }) => {
    const lastReadMessage = await ctx.db
      .query('lastRead')
      .filter((q) => q.and(q.eq(q.field('userId'), userId), q.eq(q.field('sectionId'), sectionId)))
      .first();
    return lastReadMessage?.lastReadMessageId;
  },
});


In packages/convex-server/convex/server/actions/index.ts, I define the internalAction:

export const getLastReadMessageByUserIdAndSectionId = internalAction({
  args: {
    userId: v.string(),
    sectionId: v.number(),
  },
  handler: async (ctx, args) => {
    return await ctx.runQuery(internal.server.internal.getLastReadMessageByUserIdAndSectionId, args);
  },
});


In my nodejs server, I try to call it like this:

import { api, convexClient } from '@learnontil/convex-server';

const lastReadMessage = await convexClient.action(
  api.server.actions.index.getLastReadMessageByUserIdAndSectionId,
  {
    userId,
    sectionId: Number(sectionId),
  },
);


I'm getting 2 errors - the 1st is a Typescript error when I try to return data in the internalAction, the 2nd is that getLastReadMessageByUserIdAndSectionId is not available in api.server.actions.index . How can I resolve this?
image.png
image.png
Was this page helpful?