Профиль пользователя Firebase Добавить настраиваемые поля

Можно ли добавить настраиваемые поля в таблицу профиля пользователя в Firebase?

Сейчас похоже, что я могу добавлять данные только в:

  • "uid"
  • "отображаемое имя"
  • "photoURL"
  • "Эл. адрес"
  • "emailVerified"
  • "номер телефона"
  • "isAnonymous"
  • "tenantId"
  • "providerData":
  • "apiKey"
  • "Название приложения"
  • "authDomain"
  • "stsTokenManager"
  • "redirectEventId"
  • "lastLoginAt"
  • "создано в"

Я хотел бы иметь возможность добавлять пользовательские объекты в строку JSON, чтобы содержать все пользовательские данные.

https://firebase.google.com/docs/auth/web/manage-users


person Olivia    schedule 24.10.2019    source источник
comment
Почему бы просто не создать коллекцию с идентификатором uid, связанным с записью в этой коллекции? Таким образом, вы можете заполнить все нужные поля.   -  person Angelo    schedule 24.10.2019


Ответы (2)


Быстрый пример, где после того, как я зарегистрировал пользователя, я добавляю этого пользователя в usersCollection и при необходимости предоставляю другую информацию о поле.

В моем приложении на базе Firebase я делаю следующее:

import app from 'firebase/app'
import 'firebase/auth'
import 'firebase/database'
import 'firebase/firestore'

const config = {
  apiKey: process.env.REACT_APP_API_KEY,
  authDomain: process.env.REACT_APP_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_DATABASE_URL,
  projectId: process.env.REACT_APP_PROJECT_ID,
  storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID 
}

class Firebase {
  constructor (props) {
    app.initializeApp(config)

    this.auth = app.auth()
    this.db = app.database()
    this.firestore = app.firestore()
  }

  signUpWithEmailAndPassword = (email, pw) => {
    this.auth.createUserWithEmailAndPassword(email, password)
    .then(registeredUser => {
      this.firestore.collection("usersCollection")
      .add({
        uid: registeredUser.user.uid,
        field: 'Info you want to get here',
        anotherField: 'Another Info...',
        ....
      })
    }
  }
}

Надеюсь это поможет.

person Angelo    schedule 24.10.2019
comment
является ли извлечение этих данных из облачного хранилища или базы данных в реальном времени предпочтительным методом загрузки страницы? зачем тогда им таблица профилей? - person Olivia; 25.10.2019
comment
firestore или база данных в реальном времени - выбор за вами, но Firebase рекомендует использовать firestore, поскольку он обеспечивает большую функциональность. таблица профиля? это то, что они могут использовать внутри компании для управления зарегистрированными пользователями. Ведение отдельных данных для ваших пользователей зависит от вас. Пока вы можете связать это через UID. - person Angelo; 25.10.2019
comment
Чтобы добавить некоторый фон к ответу @ Angelo, Firebase Authentication - это решение для аутентификации, оно не предназначено для использования в качестве системы управления профилями пользователей. Разработчики должны сами реализовывать функции профиля пользователя, поскольку они, как правило, зависят от конкретных вариантов использования вашей системы. - person Peter Friese; 13.02.2020
comment
@PeterFriese, зачем тратить деньги на хранение дубликатов в Firestore, если мы можем хранить их в профиле? Я действительно не понимаю, почему люди продолжают это говорить, но никогда толком не объяснял почему! - person dontdownvoteme; 18.01.2021
comment
OP хотел сохранить пользовательские данные (например, задачи, рецепты и т. Д.) В пользовательском объекте. Решения для аутентификации созданы не для этого, и для этого вам следует использовать соответствующую базу данных. Вы можете использовать любое хранилище данных, которое вам больше всего подходит, будь то Firestore, RTDB, облачное хранилище или даже что-то совершенно другое. Кроме того, у Firestore есть щедрые бесплатные лимиты - ознакомьтесь с firebase.google.com/pricing#blaze-calculator, чтобы вычислить фактическую стоимость хранения данных в Firestore. - person Peter Friese; 18.01.2021

person    schedule
comment
Здесь не приветствуются ответы только на код. Добавьте описание того, как ваш ответ решает проблему и почему он может быть предпочтительнее других уже предоставленных ответов. - person DaveL17; 17.04.2021