obj.hasOwnProperty не является ошибкой функции в запросе базы данных Firebase - PullRequest
0 голосов
/ 24 апреля 2020

Я развертываю облачную функцию в Firebase, которая действует как промежуточное ПО OAuth2, обрабатывая авторизацию и получая токен. После получения токена доступа и сведений о пользователе я хочу сохранить токен и данные пользователя в базе данных, а также обновить или создать пользователя. Код взят из этого примера . Но я всегда получаю одно и то же сообщение об ошибке из журналов функций:

TypeError: obj.hasOwnProperty is not a function
    at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:553:17)
    at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
    at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
    at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)
    at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
    at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
    at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)
    at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
    at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
    at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)

Ниже приведена функция для создания пользователя

async function createFirebaseAccount(uid, displayName, email, accessToken) {
  const databaseTask = admin.database().ref(`/idpAccessToken/${uid}`).set(accessToken);

  const userCreationTask = admin.auth().updateUser(uid, {
    displayName: displayName,
    email: email,
    emailVerified: true,
  }).catch((error) => {
    if (error.code === 'auth/user-not-found') {
      return admin.auth().createUser({
        uid: uid,
        displayName: displayName,
        email: email,
        emailVerified: true,
      });
    }
    throw error;
  });

  // execution stops here, when resolving this tasks
  await Promise.all([userCreationTask, databaseTask]);

  const token = await admin.auth().createCustomToken(uid);
  console.log('Created Custom token for UID "', uid, '" Token:', token);
  return token;
}

Переменные uid, displayName, email и token простая текстовая строка во всех четырех случаях. Токен, возвращенный из этой функции, позже возвращается вызывающему клиенту, используя jsonp. Я не понимаю, откуда эта ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...