javascript - Wie man Mindest-/Höchstgrenzen im Prisma-Modell (PostgreSQL) festlegt
Ich frage mich, ob es möglich ist zu überprüfen, ob das Alter +18 ist, bevor ein Benutzer in die Datenbank hinzugefügt wird. Ich weiß, dass ich das zur Laufzeit an REST-Endpunkten prüfen kann, aber dieser Ansatz sollte ein wenig sicherer sein(?). Vielleicht ist es irgendwie möglich, rotes SQL mit dieser Überprüfung in meine Migrationen einzufügen? Es ist das erste Mal, dass ich eine relationale Datenbank in echten Apps benutze; in MongoDb mit Mongoose musste ich nur age: { type: number, min: 18, max: 99 } im Schema definieren.
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
name String @unique @db.VarChar(40)
email String @unique @db.VarChar(120)
age Int // check if age is +18 here
}
Antwort #1
Ich glaube, dass Prisma keine Einschränkungen wie min oder max unterstützt
Es ist möglich, dies manuell in Ihrem Code zu überprüfen, aber der Wert kann in der Datenbank weiterhin auf jeden möglichen int-Wert geändert werden
Antwort #2
Ich stimme dem gleichen Schluss wie Maksym zu, möchte jedoch nur darauf hinweisen, dass Sie UUIDs anstelle einfacher IDs verwenden sollten, da dies die Tür für eine mögliche Attacke namens "IDOR" oder auch bekannt als "Unsicherer Direkter Objektzugriff" öffnet.