"payload" argument must be of type object. Received null
hey guys im using nextjs and im facing the: "payload" argument must be of type object. Received null error
what is the reason im getting this error i cant find anything
schemas:
await prisma.patient.create({
data: {
firstName: "test",
lastName: "test",
phoneNumber: "0547194781",
patientId: "123426789",
firstVisit: new Date(),
gender: "test",
dateOfBirth: new Date(),
address: {
create: {
street: "test",
city: "test",
zipCode: "test",
},
},
},
});
await prisma.patient.create({
data: {
firstName: "test",
lastName: "test",
phoneNumber: "0547194781",
patientId: "123426789",
firstVisit: new Date(),
gender: "test",
dateOfBirth: new Date(),
address: {
create: {
street: "test",
city: "test",
zipCode: "test",
},
},
},
});
model Patient {
id Int @id @default(autoincrement())
patientId String @unique @db.VarChar(10)
firstName String
lastName String
fullName String?
dateOfBirth DateTime
gender String
phoneNumber String
workPhoneNumber String?
homePhoneNumber String?
additionalPhoneNumber String?
firstVisit DateTime
email String? @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
address Patient_Address?
}
model Patient_Address {
id Int @id @default(autoincrement())
street String?
city String
zipCode String?
patientId Int @unique
patient Patient @relation(fields: [patientId], references: [id])
}
model Patient {
id Int @id @default(autoincrement())
patientId String @unique @db.VarChar(10)
firstName String
lastName String
fullName String?
dateOfBirth DateTime
gender String
phoneNumber String
workPhoneNumber String?
homePhoneNumber String?
additionalPhoneNumber String?
firstVisit DateTime
email String? @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
address Patient_Address?
}
model Patient_Address {
id Int @id @default(autoincrement())
street String?
city String
zipCode String?
patientId Int @unique
patient Patient @relation(fields: [patientId], references: [id])
}
7 Replies
You selected to wait for the human sages. They'll share their wisdom soon.
Grab some tea while you wait, or check out
#ask-ai
if you'd like a quick chat with the bot anyway!Hey @H₂O 👋
Are you using Prisma with Nextjs in an API route? If yes, can you share the code of the API route?
The error
"payload" argument must be of type object. Received null"
typically occurs when you're trying to pass null as the data object to a create operation.
However, in the code you've shared, it looks like you are providing a valid data object for the create operation. This suggests that the error might be occurring in a different part of your code or due to how the create operation is being called.Hey! thank you for the response im using nextjs 15 with actions here it is:
data being sent:
i tried some changes to the schema by removing the uniques:
export const createPatient = async (
data: z.infer<typeof CreatePatientValidation>
): Promise<{ error: boolean; message: string }> => {
try {
const session = await auth.api.getSession({
headers: await headers(),
});
if (!session) {
return { error: true, message: "err" };
}
const safeData = CreatePatientValidation.parse(data);
const idExists = await prisma.patient.findFirst({ where: { patientId: safeData.patientId } });
console.log(idExists);
if (idExists) {
return {
error: true,
message: "err",
};
}
console.log({
data: {
...safeData,
dateOfBirth: new Date(safeData.dateOfBirth),
firstVisit: new Date(),
},
});
await prisma.patient.create({
data: {
...safeData,
dateOfBirth: new Date(safeData.dateOfBirth),
firstVisit: new Date(),
},
});
revalidatePath("/patients");
return {
error: false,
message: "err",
};
} catch (err) {
return {
error: true,
message: "err",
};
}
};
export const createPatient = async (
data: z.infer<typeof CreatePatientValidation>
): Promise<{ error: boolean; message: string }> => {
try {
const session = await auth.api.getSession({
headers: await headers(),
});
if (!session) {
return { error: true, message: "err" };
}
const safeData = CreatePatientValidation.parse(data);
const idExists = await prisma.patient.findFirst({ where: { patientId: safeData.patientId } });
console.log(idExists);
if (idExists) {
return {
error: true,
message: "err",
};
}
console.log({
data: {
...safeData,
dateOfBirth: new Date(safeData.dateOfBirth),
firstVisit: new Date(),
},
});
await prisma.patient.create({
data: {
...safeData,
dateOfBirth: new Date(safeData.dateOfBirth),
firstVisit: new Date(),
},
});
revalidatePath("/patients");
return {
error: false,
message: "err",
};
} catch (err) {
return {
error: true,
message: "err",
};
}
};
{
data: {
patientId: '123456789',
firstName: 'asddsa',
lastName: 'asddsa',
gender: 'male',
phoneNumber: '0547894123',
dateOfBirth: 2024-12-18T00:00:00.000Z,
city: 'akko',
firstVisit: 2025-01-08T17:59:55.054Z
}
}
{
data: {
patientId: '123456789',
firstName: 'asddsa',
lastName: 'asddsa',
gender: 'male',
phoneNumber: '0547894123',
dateOfBirth: 2024-12-18T00:00:00.000Z,
city: 'akko',
firstVisit: 2025-01-08T17:59:55.054Z
}
}
model Patient {
id Int @id @default(autoincrement())
patientId String @db.VarChar(10)
firstName String
lastName String
fullName String?
dateOfBirth DateTime
gender String
phoneNumber String
workPhoneNumber String?
homePhoneNumber String?
additionalPhoneNumber String?
firstVisit DateTime
email String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
address PatientAddress? @relation("PatientToAddress")
@@map("patient")
}
model PatientAddress {
id Int @id @default(autoincrement())
street String?
city String
zipCode String?
patientId Int @unique
patient Patient @relation("PatientToAddress", fields: [patientId], references: [id], onDelete: Cascade)
@@map("patient_address")
}
model Patient {
id Int @id @default(autoincrement())
patientId String @db.VarChar(10)
firstName String
lastName String
fullName String?
dateOfBirth DateTime
gender String
phoneNumber String
workPhoneNumber String?
homePhoneNumber String?
additionalPhoneNumber String?
firstVisit DateTime
email String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
address PatientAddress? @relation("PatientToAddress")
@@map("patient")
}
model PatientAddress {
id Int @id @default(autoincrement())
street String?
city String
zipCode String?
patientId Int @unique
patient Patient @relation("PatientToAddress", fields: [patientId], references: [id], onDelete: Cascade)
@@map("patient_address")
}
Can you try logging the error in catch block and see if you get more information?
console.error('Error creating patient:', err);
console.error('Error creating patient:', err);
it will just point at the logging line:
⨯ TypeError: The "payload" argument must be of type object. Received null
at createPatient (file://C%3A/Users/DaYroXy/dev/smile/app/actions/patients.actions.ts:62:10)
60 | };
61 | } catch (err) {
> 62 | console.error("Error creating patient:", err);
| ^
63 | return {
64 | error: true,
65 | message: "err", {
code: 'ERR_INVALID_ARG_TYPE',
digest: '1928657120'
}
⨯ TypeError: The "payload" argument must be of type object. Received null
at createPatient (file://C%3A/Users/DaYroXy/dev/smile/app/actions/patients.actions.ts:62:10)
60 | };
61 | } catch (err) {
> 62 | console.error("Error creating patient:", err);
| ^
63 | return {
64 | error: true,
65 | message: "err", {
code: 'ERR_INVALID_ARG_TYPE',
digest: '1928657120'
}
What is the value of safeData?
{
patientId: '147894561',
firstName: 'testing',
lastName: 'testing',
gender: 'male,
phoneNumber: '1234567891',
dateOfBirth: '2024-12-10',
city: 'testing'
}
{
patientId: '147894561',
firstName: 'testing',
lastName: 'testing',
gender: 'male,
phoneNumber: '1234567891',
dateOfBirth: '2024-12-10',
city: 'testing'
}
await prisma.patient.create({
data: {
patientId: safeData.patientId,
firstName: safeData.firstName,
lastName: safeData.lastName,
fullName: safeData.firstName + " " + safeData.lastName,
dateOfBirth: new Date(safeData.dateOfBirth),
gender: safeData.gender,
phoneNumber: safeData.phoneNumber,
workPhoneNumber: safeData.workPhoneNumber ?? "",
homePhoneNumber: safeData.homePhoneNumber ?? "",
additionalPhoneNumber: safeData.additionalPhoneNumber ?? "",
firstVisit: new Date(),
email: safeData.email ?? "",
},
});
await prisma.patient.create({
data: {
patientId: safeData.patientId,
firstName: safeData.firstName,
lastName: safeData.lastName,
fullName: safeData.firstName + " " + safeData.lastName,
dateOfBirth: new Date(safeData.dateOfBirth),
gender: safeData.gender,
phoneNumber: safeData.phoneNumber,
workPhoneNumber: safeData.workPhoneNumber ?? "",
homePhoneNumber: safeData.homePhoneNumber ?? "",
additionalPhoneNumber: safeData.additionalPhoneNumber ?? "",
firstVisit: new Date(),
email: safeData.email ?? "",
},
});