/ / Използване на $ set () за добавяне на потребителски обект към / потребители в Firebase - firebase, angularfire

Използване на $ set () за добавяне на потребителски обект към / потребители в Firebase - firebase, angularfire

В момента се опитвам да добавя нови потребители към Firebase чрез AngularFire $set() метод. Създавам нови потребители чрез $createUser метод от AngularFire. Моят код изглежда така:

$scope.createUser = function() {
$scope.auth.$createUser("dolly@gmail.com", "password").then(function(user, err) {
if (err) {
console.log("ERROR: " + err);
} else {
sync.$set("users", user);
}
});
}

Това е създаването на нов потребител и поставянето на новияпотребителски обект вътре в потребителите: {..}, обаче, той също добавя допълнителен потребителски обект, който е просто дублиращ данни - това е, което кодът добавя към Firebase:

{
"users": {
"email": "dolly@gmail.com",
"id": "11",
"isTemporaryPassword": false,
"md5_hash": "xxxxxxxxxxxxxxx",
"provider": "password",
"sessionKey": "xxxxxxxxxxxxx",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0MDc5NDQ2NDYsInYiOjAsImQiOnsicHJvdmlkZXIiOiJwYXNzd29yZCIsImlkIjoiMTEiLCJ1aWQiOiJzaW1wbGVsb2dpbjoxMSIsImVtYWlsIjoiZG9sbHlAZ21haWwuY29tIiwibWQ1X2hhc2giOiIzsdrggfeedsaadrfcDc0ZDRhMTU5NTk2NzI1NzFmMDk2ZTZlNyIsImlzVGVtcG9yYXJ5UGFzc3dvcmQiOmZhbHNlLCJzZXNzaW9uS2V5IjoiM2MwMDNjODkxMDEzOWE5MjhlZTZjNWI1NjU5ZTRiZjMifSwiaWF0IjoxNDA3ODU4MjQ2fQ.p7-9GDtaNpBn1ICTLIUSwlPytaUGi-jyBgcO-LKHUys",
"uid": "simplelogin:11",
"user": {
"email": "dolly@gmail.com",
"id": "11",
"isTemporaryPassword": false,
"md5_hash": "xxxxxxxxxxxxxxx",
"provider": "dfrggrssxxxxxxx",
"sessionKey": "xxxxxxxxxxxxxxx",
"uid": "simplelogin:11"
}
}

В идеалния случай искам моите потребители да изглеждат като пример в firebase, с изключение на всеки потребителски ключ, който е вътре user.uid

users: {
user1: {
name: "Alice"
},
user2: {
name: "Bob"
}
}

Когато всеки нов потребител ще бъде добавен към users: {...} ключ, без дублирания потребител на дете да е поставен?

Отговори:

5 за отговор № 1

Ако създадете препратка към users/ и след това се обадете $set по този път, каквито и данни да включите, ще заместят всичко по този път. Това е AngularFire 101, Трябва да започнете, като прочетете поне този раздел, ако не и цялото ръководство.

Изберете пътя, по който искате да зададете данни при създаването на обекта за синхронизиране.

var ref = new Firebase(".../users/"+user.uid);
var sync = $firebase(ref);
sync.$set({ email: user.email, provider: user.provider });

Или, още по-добре, просто го поставете на препратката, тъй като не използвате това за свързване на клиентска страна.

var ref = new Firebase(".../users/"+user.uid);
ref.set({ email: user.email, provider: user.provider });

Създаването на профили е обяснено в Firebase документи и са обхванати от репо "" от англ createProfile услуга, почти дословно на вашия пример.