Heim >Web-Frontend >js-Tutorial >Backend-Einfachheit erschließen: Skalierbare Apps mit Convex erstellen

Backend-Einfachheit erschließen: Skalierbare Apps mit Convex erstellen

Linda Hamilton
Linda HamiltonOriginal
2024-12-14 21:40:11498Durchsuche

Skalierbare, effiziente Anwendungen zu entwickeln kann eine Herausforderung sein, oder? Vor allem wenn man weniger Zeit hat oder an einem Hackathon teilnimmt. Was wäre, wenn ich Ihnen sagen würde, dass es eine Backend-Lösung gibt, die diesen Prozess vereinfachen kann?

Kürzlich habe ich an einem Projekt gearbeitet, bei dem ich das Convex-Backend zum ersten Mal verwendet habe, und wissen Sie was, es fühlt sich einfach großartig an.

Convex ist mehr als nur eine Datenbank; Es handelt sich um eine umfassende Backend-Lösung, die auf moderne Entwickler zugeschnitten ist. Es bietet alles von Cloud-Funktionen in TypeScript bis hin zur Echtzeit-Datensynchronisierung, sodass Sie sich ganz auf Ihren Frontend-Code konzentrieren können. Dies hat zu seiner wachsenden Beliebtheit beigetragen.

Was zeichnet es aus?

  • Datensynchronisierung in Echtzeit: Das erstaunlichste Feature, das ich daran am meisten liebe, ist, dass die Datensynchronisierung in Echtzeit bedeutet, dass es mühsam ist, das Socket-Io einzurichten und es dann vom Backend zum Frontend zu senden. Stattdessen werden hier Daten in Echtzeit zwischen Clientanwendungen und der Datenbank synchronisiert, was sie ideal für kollaborative oder Live-Anwendungen macht.
  • Serverlose Funktionen: Convex bietet serverlose Funktionen, sogenannte „Convex Functions“, mit denen Sie Backend-Logik ausführen können, ohne Server verwalten zu müssen. Diese Funktionen sind in JavaScript oder TypeScript geschrieben.
  • Integrierte Authentifizierung: Obwohl es Dienste wie clerk, next auth gibt, die super gut mit Next.js Typoskript funktionieren, unterstützt Convex auch die Benutzerauthentifizierung, einschließlich Drittanbietern, sodass Sie problemlos Benutzeranmeldungen zu Anwendungen hinzufügen können, ohne ein benutzerdefiniertes Authentifizierungssystem einzurichten.
  • Skalierbare Datenbank: Die Datenbank von Convex ist automatisch skalierbar und so konzipiert, dass sie eine hohe Parallelität unterstützt, sodass sie große Datensätze und Verkehrsspitzen bewältigen kann.
  • Schemaloses Datenmodell: Convex verwendet ein schemaloses Datenmodell, das Ihnen die Speicherung flexibler Datenstrukturen ermöglicht, was für sich schnell entwickelnde Projekte von Vorteil ist.

Dies sind die Funktionen, die ich persönlich verwendet habe, und es gibt viele weitere Funktionen wie ACID-Transaktionen, TypeScript-Unterstützung, Sicherheit und Zugriffskontrolle, Automatisch Caching und Optimierung, können Sie auf jeden Fall ausprobieren.

Jetzt wollen wir sehen, wie der Ansatz im normalen Backend und in einem konvexen Backend durch eine einfache getGroupMembers-Funktion ist.

Lassen Sie uns eine Backend-Funktion mit MongoDB und Node.js erstellen

  • Zuerst überprüfen wir zunächst die Identität des Benutzers durch ein typisches JWT und geben bei Fehlern einfach 401 Unauthorized Response zurück.
  const identity = await verifyToken(req.headers.authorization);
  if (!identity) {
    res.status(401).send("Unauthorized");
    return;
  }

  • Sobald der Benutzer authentifiziert ist, rufen wir die Konversationsdetails ab. In diesem Schritt wird die Konversationssammlung in MongoDB anhand der bereitgestellten Konversations-ID abgefragt.
  const conversation = await db.collection("conversations").findOne({ _id: conversationId });
  if (!conversation) {
    res.status(404).send("Conversation not found");
    return;
  }

  • Als nächstes rufen wir alle Benutzer aus der Benutzersammlung ab und filtern nach denen, deren IDs mit den Teilnehmern der Konversation übereinstimmen.
  const users = await db.collection("users").find().toArray();
  const groupMembers = users.filter(user => conversation.participants.includes(user._id));

  • Schließlich geben wir die Liste der Gruppenmitglieder an den Client zurück. Diese Daten umfassen nur die Benutzer, die an der angegebenen Konversation teilnehmen.
  res.status(200).send(groupMembers);

Hier ist das darstellbare Diagramm des obigen Codeausschnitts

Unlocking Backend Simplicity: Building Scalable Apps with Convex

Lassen Sie uns eine Backend-Funktion mit Convex erstellen

  • Convex bietet eine integrierte Benutzerauthentifizierung mit ctx.auth.getUserIdentity(), wodurch es einfach ist, zu überprüfen, ob ein Benutzer angemeldet ist. Wenn der Benutzer nicht authentifiziert ist, werfen wir einen ConvexError aus, der automatisch „Unauthorized“ zurückgibt. Antwort an den Kunden.
  const identity = await ctx.auth.getUserIdentity();
  if (!identity) {
    throw new ConvexError("Unauthorized");
  }

  • Mit Convex werden Datenbankabfragen vereinfacht. Mithilfe von ctx.db.query rufen wir die Konversation ab, indem wir nach einer Übereinstimmung mit der bereitgestellten Konversations-ID filtern.
  const conversation = await ctx.db.query("conversations")
    .filter((q) => q.eq(q.field("_id"), args.conversationId))
    .first();
  if (!conversation) {
    throw new ConvexError("Conversation not found");
  }

  • Convex ermöglicht es uns, alle Benutzer mit ctx.db.query("users").collect() abzufragen. Anschließend verwenden wir einen Filter, um nur Benutzer auszuwählen, die an der Konversation teilnehmen. Die integrierten Datenabrufmethoden von Convex erleichtern die Verwaltung von Sammlungen, ohne sich um die manuelle Handhabung von Datenbankverbindungen kümmern zu müssen.
  const users = await ctx.db.query("users").collect();
  const groupMembers = users.filter((user) => conversation.participants.includes(user._id));

  • Das ist alles. Da Convex die Antwortverwaltung übernimmt, werden die Daten durch einfaches Zurückgeben von „groupMembers“ aus der Funktion an den Client gesendet.
  return groupMembers;

Und hier ist das insgesamt vereinfachte Erklärungsdiagramm, wie das Backend konvex verarbeitet wird -

Unlocking Backend Simplicity: Building Scalable Apps with Convex

Wie habe ich Convex in meinen Projekten verwendet?

Ich habe gerade das FreeCodeCamp MERN Stack Book Store Project mit Next.js, TypeScript und vor allem dem Convex-Backend neu erstellt.

Wenn Sie also eine gute Vorstellung davon haben möchten, wie Sie das Convex-Backend verwenden, können Sie meinen Github-Projekten folgen, bei denen ich meinen Tech-Stack vom MERN-Stack auf NEXT.js TS Convex umgestellt habe.

  • ????-????? (???? ?????) – Schauen Sie es sich hier an

  • ????-?????_?????? (????.?? ?? ??????) – Schauen Sie es sich hier an

Wenn Sie möchten, können Sie auch meinen LinkedIn-Beitrag dazu besuchen ??.

Abschluss

Kurz gesagt, in einem herkömmlichen Backend-Setup kümmern Sie sich manuell um Authentifizierung, Datenbankverbindungen, Abfragen und Fehler, was zu komplexerem und ausführlicherem Code führt. In Convex werden diese Aufgaben abstrahiert, was die Authentifizierung, Datenbankabfrage und Fehlerverwaltung mit minimalem Code vereinfacht und so eine schnellere Entwicklung und saubereren Code ermöglicht.

Viel Spaß beim Lernen ☺☺!!

Das obige ist der detaillierte Inhalt vonBackend-Einfachheit erschließen: Skalierbare Apps mit Convex erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn