Документ Firebase для каждого пользователя? - PullRequest
0 голосов
/ 29 апреля 2018

Мне интересно, как сделать документ для каждого пользователя при создании его учетной записи (с помощью Firebase Web). У меня включена и работает проверка подлинности Firebase, и я бы хотел, чтобы у каждого пользователя был документ в Cloud Firestore в коллекции с именем users. Как получить UID, а затем автоматически создать документ для каждого пользователя? (Я делаю это так, чтобы события календаря можно было сохранить в поле массива в документе, но мне нужен документ, с которого пользователь должен начать). Я знаю и знаю, как сделать правила безопасности для доступа, я просто не знаю, как сделать документ в первую очередь. Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Хотя определенно возможно создать документ профиля пользователя с помощью облачных функций, как предлагают Renaud и guillefd, также подумайте о создании документа непосредственно из кода вашего приложения. Подход довольно похож, например, если вы используете электронную почту + пароль для входа:

firebase.auth().createUserWithEmailAndPassword(email, password)
  .then(function(user) {
    // get user data from the auth trigger
    const userUid = user.uid; // The UID of the user.
    const email = user.email; // The email of the user.
    const displayName = user.displayName; // The display name of the user.

    // set account  doc  
    const account = {
      useruid: userUid,
      calendarEvents: []
    }
    firebase.firestore().collection('accounts').doc(userUid).set(account); 
  })
  .catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // ...
  });

Помимо запуска непосредственно из веб-приложения, этот код также создает документ с UID пользователя в качестве ключа, что упрощает последующий поиск.

0 голосов
/ 29 апреля 2018

Вы должны будете установить функцию firebase, запускаемую триггером onCreate () Auth .
1. создать триггер функции
2. получить пользовательские данные
3. установить данные учетной записи.
4. добавить данные учетной записи в коллекцию.

функция / index.js

// Firebase function 

exports.createAccountDocument = functions.auth.user().onCreate((user) => {
  // get user data from the auth trigger
  const userUid = user.uid; // The UID of the user.
  //const email = user.email; // The email of the user.
  //const displayName = user.displayName; // The display name of the user.

  // set account  doc  
  const account = {
    useruid: userUid,
    calendarEvents: []
  }
  // write new doc to collection
  return admin.firestore().collection('accounts').add(account); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...