So fügen Sie Benutzer zu Freunden Arrays im Benutzermodus hinzu
Dieser Artikel soll den Entwicklern anleiten, wie sie ihre Informationen zum User-Mode-Friends-Array der anderen Partei hinzufügen können, nachdem sie eine Freundschaftsanfrage angenommen haben. In dem Artikel werden Maßnahmen erörtert, um die Front-End-Manipulationen an Benutzer-IDs zu vermeiden und die Freundesliste über das FriendRequest-Modell abzufragen. Es wird außerdem vorgestellt, wie Sie den Benutzermodus bei der Annahme von Freundenanfragen aktualisieren, und betont, wie wichtig es ist, Transaktionen zu verwenden, um die Datenkonsistenz zu gewährleisten.
Stellen Sie die Sicherheit der Benutzer -ID sicher
Bei Anfragen von Freunden besteht ein Sicherheitsrisiko, um die Absender -ID vom vorderen Ende direkt zu erhalten. Bösartige Benutzer können die Absender -ID durch Ändern von HTML so gestalten, dass Datenkonsistenz oder potenzielle Sicherheitsprobleme führen. Um dies zu vermeiden, sollte die ID des aktuellen Benutzers aus der serverseitigen Sitzung oder Authentifizierung Middleware erhalten werden.
Beispielsweise kann ein Front-End-Formular nur die ID des Empfängers enthalten:
Verwenden Sie im Backend Routing -Handler die aktuelle Benutzer -ID der Authentifizierung Middleware als Absender:
Router.post ("/requests", (req, res) => { const {receiver} = req.body; FriendRequest.create ({{ Absender: req.user._id, // die aktuelle Benutzer -ID aus der Authentifizierung Middleware abrufen Empfänger }). Dann (() => { Res.Status (204) .Send (); }). catch ((Fehler) => { Res.Status (500) .Send ("Fehler beim Senden von Freunden"); }); });
Hier wird angenommen, dass req.user._id die ID des authentifizierten Benutzers enthält. Sie müssen diesen Teil des Codes entsprechend der Authentifizierungsmethode anpassen, die Sie verwenden.
Abfragen Freundliste über FriendRequest Model
Eine elegantere Möglichkeit besteht darin, die expliziten Wartung von Freunden Arrays im Benutzermodell zu vermeiden. Stattdessen können Sie eine Liste von Freunden erhalten, indem Sie das FriendRequest -Modell abfragen. Dieser Ansatz nutzt die Absender- und Statusfelder, die bereits im FriendRequest -Modell vorhanden sind.
Um beispielsweise alle akzeptierten Freunde des aktuellen Benutzers zu erhalten, können Sie die folgende Abfrage verwenden:
Freundschaftsanfrage .find ({Sender: req.user._id, Status: 'Accepted'}) .then ((listOffriends) => { console.log (listoffriends); }) .Catch ((e) => { // Fehler umgehen })
Der Vorteil dieses Ansatzes besteht darin, dass er die Datenreduktion vermeidet und das Freund von FriendRequest nur dann aktualisieren muss, wenn sich die Freundesbeziehung ändert.
Aktualisieren Sie das Array von Freunden im Benutzermodus (Verwendung mit Vorsicht)
Wenn Sie das Friends -Array im Benutzermodell noch explizit verwalten müssen, müssen Sie das Friends -Array für beide Benutzer aktualisieren, wenn Sie eine Freundschaftsanfrage annehmen.
Router.post ("/Anfragen/: id/accept", async (req, res) => { versuchen { const request = wartet FriendRequest.findbyId (req.params.id); request.Status = "akzeptiert"; Warten Sie Request.save (); const CurrentUser = warte user.findbyId (req.user._id); // den aktuellen Benutzer const otheruser = erwartet user.findbyId (Request.Receiver); // Erhalten Sie den Empfängerbenutzer currentUser.friends.push (Request.Receiver); otheruser.friends.push (req.user._id); Warten Sie CurrentUser.save (); Warten Sie an andere. res.Redirect ("/Anfragen"); } catch (error) { // Fehlerkonsole.Error verarbeiten ("Fehlerannahme von Freunden:", Fehler); res.status (500) .send ("Fehlerannahme von Freunden"); } });
Anmerkungen: Verwenden Sie Transaktionen
Verwenden Sie bei der Aktualisierung mehrerer Sammlungen Datenbanktransaktionen, um die Datenkonsistenz sicherzustellen. Wenn die Aktualisierung des Benutzermodells nach der Aktualisierung des FriendRequest -Modells fehlschlägt, können Daten inkonsistent sein.
Hier ist ein Beispiel für die Verwendung von Mongoose -Transaktionen:
const mongoose = erfordern ('mongoose'); Router.post ("/Anfragen/: id/accept", async (req, res) => { const seision = erwartet mongoose.startSession (); Session.StartTransaction (); versuchen { const request = wartet FriendRequest.findbyId (req.params.id) .Session (Sitzung); request.Status = "akzeptiert"; Await Request.save ({Sitzung}); const CurrentUser = warte user.findbyId (req.user._id) .Session (Sitzung); // den aktuellen Benutzer const otheruser = erwartet user.findbyId (Request.Receiver) .Session (Sitzung); // den Empfänger Benutzer currentUser.friends.push (Request.Receiver) erhalten; otheruser.friends.push (req.user._id); Warten Sie CurrentUser.save ({Sitzung}); Warten Sie an andere. Warte Session.Committransaction (); Session.endSession (); res.Redirect ("/Anfragen"); } catch (error) { Warte Session.abortTransaction (); Session.endSession (); // Fehlerkonsole.Error verarbeiten ("Fehlerannahme von Freunden:", Fehler); res.status (500) .send ("Fehlerannahme von Freunden"); } });
In diesem Beispiel erstellt mongoose.startSession () eine neue Sitzung und Sitzung. StartTransaction () startet die Transaktion. Alle Datenbankvorgänge übergeben Sitzungsobjekte über .Session (Sitzung). Wenn alle Operationen erfolgreich sind, verpflichtet Session.committransaction () die Transaktion; Andernfalls rollt Session.abortTransaction () die Transaktion zurück und widerrufen alle Änderungen.
Zusammenfassen
Achten Sie bei der Bearbeitung von Freunden an, die auf die Sicherheit der Benutzer -ID achten, und überlegen Sie, ob Sie das Freundesquest -Modell verwenden können, um die Freundesliste abzufragen, um die Redundanz von Daten zu vermeiden. Wenn Sie das Friends -Array im Benutzermodell explizit verwalten müssen, verwenden Sie Datenbanktransaktionen, um die Datenkonsistenz sicherzustellen. Welche Methode zu wählen, hängt von Ihren spezifischen Anforderungen und Anforderungen an die Datenkonsistenz ab.
Das obige ist der detaillierte Inhalt vonSo fügen Sie Benutzer zu Freunden Arrays im Benutzermodus hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

In diesem Artikel wird vorgestellt, wie Sie JavaScript verwenden, um den Effekt des Klickens auf Bilder zu erreichen. Die Kernidee besteht darin, das Datenattribut von HTML5 zu verwenden, um den alternativen Bildpfad zu speichern und über JavaScript zu klicken und die SRC-Attribute dynamisch zu schalten, wodurch die Bildschaltung ermittelt wird. Dieser Artikel enthält detaillierte Code -Beispiele und -erklärungen, mit denen Sie diesen häufig verwendeten interaktiven Effekt verstehen und beherrschen können.

Überprüfen Sie zunächst, ob der Browser GeolocationAPI unterstützt. Wenn Sie unterstützt werden, rufen Sie GetCurrentPosition () auf, um die aktuellen Standortkoordinaten des Benutzers zu erhalten, und erhalten Sie die Werte mit Breiten- und Längengraden durch erfolgreiche Rückrufe. Geben Sie gleichzeitig Ausnahmen wie Ablehnungsberechtigung, Nichtverfügbarkeit des Standorts oder Zeitüberschreitung an. Sie können auch Konfigurationsoptionen übergeben, um eine hohe Präzision zu ermöglichen, und die Zeitüberschreitungs- und Cache -Gültigkeitsdauer festlegen. Der gesamte Prozess erfordert die Benutzerkennstellung und die entsprechende Fehlerbehandlung.

Dieser Artikel zielt darauf ab, das Problem der Rückgabe von Null zu lösen, wenn DOM -Elemente über document.getElementById () in JavaScript erhalten werden. Der Kern besteht darin, den Skriptausführungszeitpunkt und den DOM -Parsing -Status zu verstehen. Durch korrektes Platzieren des Tags oder die Verwendung des Domcontent -Ereignisses können Sie sicherstellen, dass das Element erneut versucht wird, wenn es verfügbar ist, und diese Fehler effektiv zu vermeiden.

TheBestatorreateamulti-linestringinjavaScriptsisingisingTemPlatalalsWithbackttticks, die PREERDEVETICKS, die fürserverekeandexactlyAswrittens.

Um ein Wiederholungsintervall in JavaScript zu erstellen, müssen Sie die Funktion "setInterval () verwenden, mit der Funktionen oder Codeblöcke in angegebenen Millisekunden -Intervallen wiederholt ausgeführt werden. SetInterval () => {console.log ("Alle 2 Sekunden ausführen");}, 2000) gibt eine Nachricht alle 2 Sekunden aus, bis sie durch ClearInterval (Intervalid) gelöscht wird. Es kann in tatsächlichen Anwendungen verwendet werden, um Uhren, Umfrageserver usw. zu aktualisieren, aber auf die Mindestverzögerungsgrenze und die Auswirkungen der Funktionsausführungszeit zu achten und das Intervall rechtzeitig zu löschen, wenn es nicht mehr benötigt wird, um Speicherleckage zu vermeiden. Vor allem vor der Deinstallation oder dem Schließen der Komponente stellen Sie sicher, dass dies sicherstellen

Die NuXT3 -Kompositions -API -Kernverwendung umfasst: 1. DefinePagemeta, um Seiten -Meta -Informationen wie Titel, Layout und Middleware zu definieren. 2. Ushead wird verwendet, um Seiten -Header -Tags zu verwalten, unterstützt statische und reaktionsschnelle Updates und muss mit DefinePagemeta zusammenarbeiten, um die SEO -Optimierung zu erreichen. 3. UseasyncData wird verwendet, um sicher asynchrone Daten zu erhalten, den Lade- und Fehlerstatus automatisch zu verarbeiten und die Server- und Client -Datenerfassungssteuerung zu unterstützen. V.

In diesem Tutorial wird ausführlich erläutert, wie Zahlen in Zeichenfolgen mit festen zwei Dezimalstellen in JavaScript formatiert werden. Auch Ganzzahlen können in Form von "#.00" angezeigt werden. Wir konzentrieren uns auf die Verwendung der Nummer.

Verwenden Sie die WriteText -Methode von ClipaPi, um Text in die Zwischenablage zu kopieren. Sie muss in Sicherheitskontext und Benutzerinteraktion aufgerufen werden, unterstützt moderne Browser und die alte Version kann mit Execcommand herabgestuft werden.
