Next.js Discord

Discord Forum

getting undefined from server action

Answered
Britannia Petite posted this in #help-forum
Open in Discord
Britannia PetiteOP
im passing a deleteBetaKey server function (from server side page) to a client component and in the handleDeleteBetaKey where i await the result from the server function, it returns undefined
Answered by Britannia Petite
fix was to do
return NextResponse.next({ 
request: { headers: requestHeaders} 
});
View full answer

6 Replies

Britannia PetiteOP
/server/betakey.ts
"use server";
....

export const deleteBetaKey = async (id: string) => {
  const isAdmin = await useAdmin();

  if (!isAdmin) {
    return {
      success: false,
      message: "You are not authorized to delete beta keys",
    };
  }

  const key = await db.select().from(betaKey).where(eq(betaKey.id, id));

  if (!key) {
    return {
      success: false,
      message: "Beta key not found",
    };
  }

  await db.delete(betaKey).where(eq(betaKey.id, id));

  return {
    success: true,
    message: "Beta key deleted successfully",
  };
};
now when i pass this functionf from a server side component to a client one
  const handleDelete = async () => {
    const result = await deleteBetaKey(id);

    console.log(result);
  };

this is undefined
the function is passed as :
deleteBetaKey: (id: string) => Promise<{ success: boolean; message: string }>;
Britannia PetiteOP
middleware.ts

import { getSessionCookie } from "better-auth/cookies";
import { NextRequest, NextResponse } from "next/server";

export async function middleware(request: NextRequest) {
  const sessionCookie = getSessionCookie(request, {
    cookiePrefix: "DO-NOT-SHARE-rage",
  });

  const requestHeaders = new Headers(request.headers);
  if (request.url.includes("/dashboard")) {
    requestHeaders.set("x-url", request.url);
  }

  if (!sessionCookie) {
    return NextResponse.redirect(new URL("/auth/login", request.url));
  }

  return NextResponse.next({ headers: requestHeaders });
}

export const config = {
  matcher: ["/dashboard/:path*"],
};
could it be the middleware?
Britannia PetiteOP
fix was to do
return NextResponse.next({ 
request: { headers: requestHeaders} 
});
Answer