MongoDB schema-design für mehrere auth-user-accounts

Ich bin über meinen node.js - /express - /Mungo /Pass Anwendung, und ich bin denken über das Recht "schema-design" für Benutzer und Konten.

Wird es Benutzer loging in von twitter und facebook sowie von einheimischen Konten. Zu einem späteren Zeitpunkt möchte ich einen Benutzer für die Verbindung der beiden twitter und facebook mit meiner Anwendung (und vielleicht noch weitere externe Konten).

Ich kann nicht denken Sie an eine gute Lösung für diese situation. Hier sind die Optionen die ich denke:

1.Mit einem Profil Modell-und Konto-Modelle. Profil-Dokumente darstellen, die unique user, während ein Konto entweder Benutzername und Passwort (internes Konto) oder die Authentifizierungs-Daten aus den auth-provider (externes Konto). Ein Profil muss mindestens einen verschachtelte Konto-Dokument.

var ExtAccountSchema = new Schema({
    type: String, //eg. twitter, facebook, native
    uid: String
});

var IntAccountSchema = new Schema({
    username: String,
    password: String
});

var ProfileSchema = new Schema({
    firstname: String,
    lastname: String,
    email: String,
    accounts: [Account] //Pushing all the accounts in there
});

Was ich nicht mag über es sind nicht so konsistent Konto-Dokumente, die aus verschiedenen account-Daten und der Tatsache, dass ich habe eine harte Zeit der Suche nach dem richtigen Konto, wenn meine Benutzer anmeldet (Suche nach uids und account-Typen, die in geschachtelten Dokumenten -.-)

2.Nachdem alle Daten in einem einzigen Modell

var ProfileSchema = new Schema({
    firstname: String,
    lastname: String,
    email: String,        
    twitter-uid: String,
    facebook-uid: String
    password: String
});

Gut, das ist nur hässlich -.- Wäre es vielleicht einfacher/schneller zu finden, die richtigen Konto Daten, aber es ist nicht schön zu pflegen.

Gibt es eine bessere Lösung? Gibt es eine best practice?

  • Im Gegensatz zu relationalen Datenbanken mit MongoDB die besten "schema-design" hängt weitgehend davon ab, wie Sie gehen, um auf die Daten zugreifen. Was werden Sie mit den Account-Daten, und wie werden Sie zugreifen?
  • Ich werde die Konto-Daten für die Authentifizierung bei passport. Profil-Daten zugegriffen wird, die auf fast jeder Seite mehrere Zwecke. Ich werde auf Sie durch Mungo ODM
  • So Account-Daten wird nur zugegriffen werden, wenn der Benutzer sich anmeldet, und Sie werden mit einer session-Mechanismus zum verfolgen von Anmeldungen, wenn das passiert? (Im Gegensatz zu dem brauchen die Account-Daten auf jede Seite zugreifen.)
  • Ich muss user-Daten auf jeder Seite. Aber ich bin nicht sicher, wie Sie zu strukturieren. In meinem Beispiele habe ich unterteilt die Daten in Konten und profile. Also ich kann auf das Profil zugreifen, alle die Zeit und die Konten nur für die Anmeldung.
InformationsquelleAutor Sven | 2012-06-19
Schreibe einen Kommentar