Sto facendo un'app per la modifica di note collaborative che utilizza un database NoSQL (Firebase) sul lato server. Ogni utente può registrarsi utilizzando il proprio numero di telefono o e-mail. Attualmente, l'oggetto utente ha solo quattro valori: user_id, user_name, user_email, user_phone.
Ogni utente può creare una nota includendo persone dai suoi contatti anche se non sono registrati. Se la persona non è registrata, gli verrà inviato un SMS / e-mail che è stato incluso e si iscriverà per partecipare.
Il problema è questo:
Ogni oggetto note contiene un elenco di utenti per questo. Ogni utente avrà tutti i campi incluso un ID generato casualmente. Se una persona in quella nota si registra più tardi, come faccio a collegarmi tra quell'utente e questa nota? L'ID che un utente otterrà quando si registrerà sarà diverso dal suo ID in quella nota precedente. Attualmente il database è costituito da una raccolta di utenti, raccolta di note.
Una soluzione che ho trovato è stata:
Crea una raccolta chiamata pending_invites e aggiungi ogni utente non registrato da ogni nota aggiunta (insieme all'elenco di notes_id di cui fanno parte). Quando qualcuno si iscrive, confrontalo (usando l'email o il numero di telefono) con ogni utente nella tabella pending_invites e, se trova qualcuno, modifica l'ID di quell'utente (sostituirlo con l'ID che ha ottenuto durante l'iscrizione) in quelle note di cui è parte di. Ma ritengo che questa non sia una buona soluzione quando ci sono molti utenti.
Fornisci una soluzione migliore se hai qualche idea. Qualsiasi cambiamento nella struttura db è ben accetto.