Для `firebase_tools.firestore .delete` требуется токен, но откуда этот токен? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть облачная (вызываемая) функция Firebase, которая удаляет документ пожарного хранилища и все дочерние объекты, включая вложенные коллекции. Я делаю это, слегка изменяя функцию, предоставленную моей базой данных в их документах: https://firebase.google.com/docs/firestore/solutions/delete-collections

Важный бит здесь:

...
return firebase_tools.firestore
      .delete(path, {
        project: process.env.GCLOUD_PROJECT,
        recursive: true,
        yes: true,
        token: functions.config().fb.token
      })
...

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

Unhandled error TypeError: Cannot read property 'token' of undefined

Это указывает на строку в приведенном фрагменте кода: token: functions.config().fb.token. Так что .fb равно нулю.

Что здесь происходит?

Поиск в Интернете говорит мне кое-что о login:ci в командной строке, но хотя я разрабатываю это на своем ноутбуке Когда приложение развернуто, не будет командной строки . Сайт будет на хостинге firebase. Это делает вызов функции облачной базы. Я использую firebase auth для аутентификации пользователя (электронная почта / пароль) и сохраняю данные в firestore.

Кроме того, я уже включен в моей командной строке, так как я могу нормально делать firebase deploy --only functions. Как мне убедиться, что functions.config().fb не возвращает ноль ??

1 Ответ

1 голос
/ 24 апреля 2020

Если хотите, вы можете просто вставить строку токена непосредственно в код, заменив functions.config().fb.token. Авторы этой страницы, вероятно, решили, что вы не хотите этого делать, поэтому они предложили вместо этого создать для нее элемент конфигурации.

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

firebase functions:config:set fb.token=<YOUR-TOKEN>

Снова разверните вашу функцию, чтобы она могла использовать это значение.

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

...