prisma chobo
06/30/2021, 12:45 AMmodel User {
id String @id @default(cuid())
password String? @db.VarChar(255)
phoneNumber String @unique
createdAt DateTime?
updatedAt DateTime?
deletedAt DateTime?
}
and when I do this:
await prisma.user.create({
data: {
password: "password",
phoneNumber: "+4081824712",
},
});
I get this error:
Invalid `prisma.user.create()` invocation:
{
data: {
createdAt: '2021-06-30T00:41:32Z',
+ phoneNumber: String,
? id?: String,
? password?: String | null,
? updatedAt?: DateTime | null,
? deletedAt?: DateTime | null
}
}
Argument phoneNumber for data.phoneNumber is missing.
Note: Lines with + are required, lines with ? are optional.
Mahmoud
06/30/2021, 4:31 AMphoneNumber
is missing but you’re passing it 🤔Mahmoud
06/30/2021, 4:31 AMprisma chobo
06/30/2021, 5:05 AMprisma chobo
06/30/2021, 5:09 AMprisma chobo
06/30/2021, 5:11 AMprisma chobo
06/30/2021, 5:20 AMMahmoud
06/30/2021, 5:27 AMMahmoud
06/30/2021, 5:28 AMnode_modules
folder and running npm i && npx prisma generate
?Mahmoud
06/30/2021, 5:28 AMprisma chobo
06/30/2021, 5:29 AMprisma chobo
06/30/2021, 5:29 AMMahmoud
06/30/2021, 5:31 AMMahmoud
06/30/2021, 5:32 AMcreatedAt
and updatedAt
fields in your schema to this :
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
This way you don’t have to worry about passing them when using create()
or update()
prisma chobo
06/30/2021, 5:38 AMprisma chobo
06/30/2021, 5:39 AM// Timestamp middleware
prisma.$use(async (params, next) => {
if (params.action === "create") {
params.args["data"] = { createdAt: timestamp() };
}
if (params.action === "createMany") {
if (params.args.data !== undefined) {
params.args.data["createdAt"] = timestamp();
} else {
params.args["data"] = { createdAt: timestamp() };
}
}
if (params.action === "update") {
params.args["data"] = { updatedAt: timestamp() };
}
if (params.action === "updateMany") {
if (params.args.data !== undefined) {
params.args.data["updatedAt"] = timestamp();
} else {
params.args["data"] = { updatedAt: timestamp() };
}
}
if (params.action === "delete") {
params.action = "update";
params.args["data"] = { deletedAt: timestamp() };
}
if (params.action === "deleteMany") {
params.action = "updateMany";
if (params.args.data !== undefined) {
params.args.data["deletedAt"] = timestamp();
} else {
params.args["data"] = { deletedAt: timestamp() };
}
}
return next(params);
});
janpio
data
values.janpio
params.args["data"] = { createdAt: timestamp() };
the data
object` only has the createdAt
.janpio
createdAt
property, not replace the whole object.Mahmoud
06/30/2021, 6:49 AMcan I share you my entire schema ?Sure
prisma chobo
06/30/2021, 2:47 PM