Почему я не могу развернуть этот код для функций firebase?Я не понимаю ошибку - PullRequest
0 голосов
/ 25 апреля 2019

Я новичок в Firebase-функциях - очевидно, - и я пытаюсь проверить, не используется ли электронная почта в указанном пути базы данных при ее создании учетной записью, если она не используется, и измените ее.значение базы данных соответственно.Вот код:

exports.checkEmail = functions.database.ref('/checkEmailExistance')
    .onCreate((snapshot, context) => {
      // Grab the current value of what was written to the Realtime Database.
      const email = snapshot.val();
      console.log('Email:', email, context.params.pushId);
      admin.auth().getUserByEmail(email)
      .then(snapshot => {
          const data = snapshot.toJSON()

          return admin.database().ref('checkEmailExistance').child(email).set("Nope") 
      })
});

и ошибка:

ERROR: /Users/nathan/Documents/FirebaseFunctionsClipify/functions/src/index.ts:41:7 - Promises must be handled appropriately
ERROR: /Users/nathan/Documents/FirebaseFunctionsClipify/functions/src/index.ts:42:13 - Shadowed name: 'snapshot'

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! functions@ lint: `tslint --project tsconfig.json`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the functions@ lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/nathan/.npm/_logs/2019-04-25T16_21_29_696Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit code2

ОБНОВЛЕНИЕ:

Я изменил код, поэтому ошибки не должны возникать снова, новсе еще получил ту же ошибку:

exports.checkEmail = functions.database.ref('/checkEmailExistance')
    .onCreate((snapshot, context) => {
      // Grab the current value of what was written to the Realtime Database.
      const email = snapshot.val();
      console.log('Email:', email, context.params.pushId);
      return admin.auth().getUserByEmail(email)
      .then(snap => {
          const data = snap.toJSON()

          return admin.database().ref('checkEmailExistance').child(email).set("Nope") 
      })
    });

1 Ответ

1 голос
/ 25 апреля 2019

Вторая ошибка говорит вам, что вы переопределили существующую переменную с именем snapshot. Обратите внимание, что снимок определяется на верхнем уровне вашего обратного вызова функции, а затем снова в обратном вызове then. Второй экземпляр - это «слежка» за первым, что является потенциальной ошибкой в ​​вашем коде. Просто назовите вторую переменную как-то иначе.

Первая ошибка в сообщении говорит о том, что в вашем коде есть необработанное обещание. Вы можете исправить это, вернув обещание от admin.auth().getUserByEmail().then(...):

  return admin.auth().getUserByEmail(email)
  .then(snap => {
      const data = snap.toJSON()

      return admin.database().ref('checkEmailExistance').child(email).set("Nope") 
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...