Je suis très nouveau à Ionic/Firebase mais j'ai essayé de nettoyer mon code de sorte que tout ce qui concerne l'accès à la base de données est dans mon usine. La façon dont j'ai structuré mes utilisateurs est que l'uid de toute nouvelle authentification, y compris Facebook ou Google, est stocké dans un tableau d'uids, avec la clé associée. L'utilisateur est également stocké dans le tableau des utilisateurs en premier (où la clé ci-dessus a été générée de manière aléatoire). Cela me permet d'accéder à l'utilisateur actuel à partir de l'objet Auth.Créer une usine pour obtenir l'objet utilisateur actuel à tout moment de Ionic/Firebase
{
"uids" : {
"7d34fb85-813c-4586-857e-f062aed67f32" : {
"-KDQDk5vwJXmFngwI7iQ" : {
"registered" : true
}
}
},
"users" : {
"-KDQDk5vwJXmFngwI7iQ" : {
"email" : "[email protected]",
"firstname" : "TestName",
"lastname" : "TestLastName",
"uid" : "7d34fb85-813c-4586-857e-f062aed67f32"
}
}
}
Maintenant, je suis en train de créer une usine, je peux appeler à partir d'un contrôleur pour obtenir les détails de l'utilisateur actuel - prénom, nom, etc.
Cependant, je ne pense pas que ce soit la bonne façon de faire fonctionner les choses. Idéalement, je veux être en mesure d'appeler Users.getCurrentUser.firstname
sur n'importe quel contrôleur.
Voici les deux usines. Qu'est-ce que je fais de mal et comment puis-je restructurer mon code?
/**
* Authentication service
*/
app.factory('Auth', ['rootRef', '$firebaseAuth', function (rootRef, $firebaseAuth) {
return $firebaseAuth(rootRef);
}]);
/**
* Anything related to the Users array
*/
app.factory('Users', ['$firebaseArray','$firebaseObject', 'Auth', function ($firebaseArray, $firebaseObject, Auth) {
var ref = new Firebase("https://[myfirebaseurl].firebaseio.com");
var users = $firebaseArray(ref.child('users'));
var uids = $firebaseArray(ref.child('uids'));
return {
all: function() {
return users;
},
get: function (id) {
// Simple index lookup - I also want to be able to use this if a user lets say clicks a user profile in a list of profiles in the app to view a profile, but currently I have no user_id key in my database - do I need to set this up?
return users[id];
},
getCurrentUser: function() {
var uid = Auth.$getAuth().uid;
var key = new Firebase(uids + uid).child();
var user = new Firebase(users + key).child();
return $firebaseObject(user);
}
}
}])
Toute aide plus appréciée.
Merci.
Vous avez inclus une photo de la Arbre JSON dans votre question. Remplacez-le par du texte JSON, que vous pouvez facilement obtenir en cliquant sur le bouton Exporter de votre base de données Firebase. Avoir le JSON sous forme de texte le rend facilement consultable, nous permet de l'utiliser facilement pour tester avec vos données réelles et l'utiliser dans notre réponse et en général, c'est juste une bonne chose à faire. –
@FrankvanPuffelen voir les changements. –