как добавить дополнительную информацию о пользователе в проекты Firebase - PullRequest
0 голосов
/ 25 февраля 2019

У меня проблемы с хранением дополнительной информации поверх пользователя с помощью библиотеки администратора firebase на node.js.

Например, я хотел бы сохранить идентификатор для каждого пользователя, скажем, OrganizationId.

Что я пробовал:

// Add user to firebase Auth Service
            admin.auth().createUser({
                email: email,
                emailVerified: false,
                password: 'secret',
                organization: 99,
                disabled: false
            })
                .then(function (userRecord) {
                    // See the UserRecord reference doc for the contents of userRecord.
                    console.log("Successfully created new user:", userRecord.uid);
                })
                .catch(function (error) {
                    console.log("Error creating new user:", error);
                });
        })

Это создает пользователя безжалуется, но когда я пытаюсь получить организацию, когда пользователь вошел в систему, он показывает неопределенное.

Я также пытался сохранить идентификатор в photoUrl, это невозможно.

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

Спасибо

1 Ответ

0 голосов
/ 25 февраля 2019

Невозможно добавить «дополнительную информацию» пользователю, когда он создан методом createUser() из Admin SDK.Документация объясняет, что вам необходимо передать объект CreateRequest, который содержит определенное количество полей.

Если вы хотите добавить дополнительную информацию, вам потребуется, как вы упомянули, чтобы создать дополнительный документ в вашей базе данных (например, в коллекции users в Firestore).

Вы можете использовать следующий код в облачной функции (т.е. используя Admin SDK):

  ...
  return admin
      .auth()
      .createUser({
        email: email,
        emailVerified: false,
        password: password,
        displayName: userName,
        disabled: false
      })
      .then(userRecord => {

        const userId = userRecord.uid;

        const userDocRef = admin
          .firestore()
          .collection('users')
          .doc(userId);

       return userDocRef.set(userDocRef, {
          userName: userName,
          firstName: firstName,
          lastName: lastName,
          organization: 99
        });
      })
      .then(....)

Обратите внимание, что photoURL является одним из возможных полей для объекта CreateRequest.Поэтому вы можете использовать это поле или создать свое собственное поле в пользовательском документе.


Обновление на основе ваших комментариев:

Я понимаю, что вы хотитечтобы сохранить дополнительные документы пользователей в базе данных Firebase Realtime (а не в Firestore) и чтобы у вас были проблемы с установкой правильного значения для userUid.Вы должны использовать обозначение в квадратных скобках следующим образом:

var update = {};
update[userUid] = { organization: 999 };
return usersRef.set(update);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...