Il nostro team sta imparando a lavorare con MongoDB. Dobbiamo modellare utente tra le altre cose per un'applicazione basata su OAuth. Sappiamo come modellare nel mondo relazionale, ma non siamo sicuri su come farlo in NoSQL.
Nella nostra applicazione identifichiamo l'utente in modo univoco dal suo indirizzo email . Gli indirizzi email sono naturalmente unici e anche verificabili. L'indirizzo email sembra essere un buon candidato per una chiave.
Non modelliamo la persona. Non abbiamo la possibilità di identificare una persona, solo il suo indirizzo email. Ciò significa che se una persona ha più di un indirizzo e-mail, avrà diversi documenti nel database. Inoltre, se cambia il suo indirizzo e-mail, usa un documento diverso. Inoltre, poiché le persone eseguono il login con OAuth, non esiste il concetto che gestiscano i loro dati. Non c'è password e il nome utente è dato da OAuth.
Perché non utilizzare l'indirizzo email per la chiave primaria di una raccolta _id
? In questo modo:
{
_id: "[email protected]",
name: "John Doe",
provider: "example.com",
comments: [
// all comments
]
}
Quali sono i pro e i contro di questo approccio?
Modificato per chiarire la differenza tra persona e utente