Virtual or computed fields can be pretty useful when fields are derived from the parts of the actual record(for example computing gravatar from email). - Mongoose implements them like so: https://mongoosejs.com/docs/tutorials/virtuals.html - TypeORM via `@AfterLoad`: https://github.com/typeorm/typeorm/blob/master/docs/listeners-and-subscribers.md#afterload + https://github.com/typeorm/typeorm/issues/1288#issuecomment-478337948 - Sequelize has virtual fields via their getters/setters and `D
Prisma unterstützt nativ keine virtuellen oder berechneten Felder, wie es etwa Mongoose, TypeORM oder Sequelize tun. Anstatt jedoch auf diesen Feature-Support zu warten, können Sie eine benutzerdefinierte Lösung implementieren. Dieses Vorgehen umfasst die Verwendung externer Berechnungen basierend auf den Daten und die Rückgabe dieser Berechnungen als Teil Ihres Anwendungslogiks.
Hier ist ein möglicher Lösungsansatz zur Implementierung:
import md5 from 'md5';
// Beispiel für einen virtuellen Getter in einem Service oder Controller
async function getUserWithGravatar(userId) {
const user = await prisma.user.findUnique({
where: { id: userId }
});
if (!user) throw new Error('User not found');
const gravatarUrl = `https://gravatar.com/avatar/${md5(user.email)}`;
return {
...user,
gravatar: gravatarUrl
};
}
// Nutzung der Funktion in Ihrer Logik
getUserWithGravatar('123').then(user => {
console.log(user.gravatar); // Ausgabe des Gravatar-URLs
});Diese Implementierung umgeht das Fehlen von nativen virtuellen Feldern in Prisma durch ein ausschlaggebendes Logik-Skript, das Daten aus dem Prisma-Client bezieht, notwendige Berechnungen durchführt und ein erweitertes Datenobjekt zurückgibt.
Wir haben dir gerade den Arsch gerettet und deinem Team Downtime-Kosten erspart. Keine Paywall, kein Formular. Wenn dein Server wieder atmet, schließe den kybernetischen Kreislauf: