Добавление uid в базу данных firebase с помощью angularfire

Я использую angularfire для своего текущего проекта. Мне трудно настроить правила безопасности.

Вот моя структура данных:

{
   users : {
      uid1 : { .. },
      uid2 : { .. }
   }
}

Правила безопасности:

{ 
  "rules" : { 
     "users" : {
        "$uid" : {
           ".write": "auth !== null && auth.uid === $uid",
           ".read": "auth !== null && auth.uid === $uid"
         }
     }
  }
}

Я использую анонимную аутентификацию, а "uid1" и "uid2" ничто по auth.uid.

Я использую следующий код для создания

var obj = $firebaseObject(ref.child('users').child(auth.uid));

Он возвращается нормально с $loaded, но не создает узел uid под пользователями.


person Vikas Singhal    schedule 07.12.2015    source источник
comment
Вы предполагаете, что строка $firebaseObject(ref.child('users').child(auth.uid)); создаст новую запись /users/$uid?   -  person David East    schedule 07.12.2015
comment
да. У меня есть ощущение, что я делаю это ужасно неправильно.   -  person Vikas Singhal    schedule 07.12.2015


Ответы (1)


Вызов $firebaseObject создает двустороннюю привязку: все, что изменяется в объекте в базе данных, будет автоматически синхронизировано с вашим приложением.

Однако вызов $firebaseObject не автоматически создает объект.

Чтобы создать пользователя, вы можете использовать Firebase JavaScript SDK:

ref.child('users').child(auth.uid).set({ name: 'Vikas Singhal' })

Или вы можете создать его через AngularFire с помощью:

var obj = $firebaseObject(ref.child('users').child(auth.uid));
obj.name = 'Vikas Singhal';
obj.$save();

Поскольку AngularFire построен на основе Firebase JavaScript SDK, смешивание двух API работает нормально.

person Frank van Puffelen    schedule 07.12.2015