MongoDB la conception d'un schéma pour plusieurs comptes d'utilisateur auth

Je suis sur le point de construire mon node.js /express /mangouste /passeport application et je suis à la réflexion sur le droit la conception d'un schéma pour les utilisateurs et les comptes.

Il y aura des utilisateurs loging à partir de twitter et facebook ainsi que de natifs des comptes. À un stade ultérieur, je veux un utilisateur de se connecter à la fois twitter et facebook avec mon application (et peut-être même plus externe des comptes).

Je ne peux pas penser à une bonne solution pour cette situation. Voici les options que je pense:

1.Avoir un modèle de profil de compte et de modèles. Profil de documents représentent l'unique utilisateur, tandis que le compte soit d'utilisateur et mot de passe (compte interne) ou les données d'authentification de l'auth-fournisseur (compte externe). Un profil doit avoir au moins un imbriquée compte de document.

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
});

Ce que je n'aime pas ce sont les pas de façon cohérente compte des documents provenant des différentes données de compte et le fait que j'ai du mal à trouver le bon compte lorsque mon utilisateur se connecte (la recherche des uides et des types de compte dans les documents -.-)

2.Avoir toutes les données en un modèle unique

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

Bien, c'est juste laid.- Il pourrait être plus facile, plus rapide à trouver le bon compte de données, mais il n'est pas agréable à entretenir.

Est-il une meilleure solution? Est-il une meilleure pratique?

  • Contrairement aux bases de données relationnelles, avec MongoDB le meilleur de la conception du schéma dépend beaucoup de la façon dont vous allez être l'accès aux données. Qu'allez-vous être en utilisant les données de Compte pour, et comment allez-vous y accéder?
  • Je vais utiliser les données du compte pour l'authentification avec le passeport. Profil d'accès aux données sur presque chaque page multible fins. Je vais avoir accès par l'entremise de la mangouste ODM
  • Donc les données ne seront accessibles que lorsque l'utilisateur se connecte, et vous serez à l'aide d'un mécanisme de session pour garder une trace des connexions une fois que cela arrive? (Par opposition au besoin les données du Compte sur chaque page d'accès.)
  • J'aurai besoin de données de l'utilisateur sur chaque page. Mais je ne suis pas sûr de savoir comment le structurer. Dans mes exemples j'ai divisé les données dans les comptes et le profil. Donc, je peux accéder au profil de tous les temps et comptes juste pour la connexion.
InformationsquelleAutor Sven | 2012-06-19