Запись в Cloud Firestore (эмулятор) не отображается в эмуляторе Cloud Functions - PullRequest
1 голос
/ 06 ноября 2019

Я использую Firebase Hosting / Firestore / Functions для приложения Vue. Хостинг + Firestore работают нормально. Теперь я хочу добавить больше функциональности и хочу добавить функции. Для локального тестирования я запустил Firestore и могу запустить все 3 эмулятора. Теперь, когда я запускаю эмуляторы и перехожу на эмулятор хостинга, я могу вставить запись, которая также отображается в производственной базе данных, но функция не срабатывает. Это на создание. Я развернул функцию, и она отлично работает. Я вижу console.log ().

Почему локальная / производственная запись не запускает облачную функцию?

Вот функция:

export const sendWelcomeEmail = functions.firestore.document('/activeJobsTestDB/{jobId}').onCreate((data,context) => {
  const inputRecord = data.data();
  console.log('here' + inputRecord);
  // const mailOptions = { 
  //   from: '"Spammy Corp." <noreply@firebase.com>',
  //   to: inputRecord.email,
  // };

});
i  Starting emulators: ["functions","firestore","hosting"]
⚠  Your requested "node" version "8" doesn't match your global version "12"
✔  functions: Emulator started at http://localhost:5001
i  firestore: Serving ALL traffic (including WebChannel) on http://localhost:8080
⚠  firestore: Support for WebChannel on a separate port (8081) is DEPRECATED and will go away soon. Please use port above instead.
i  firestore: Emulator logging to firestore-debug.log
✔  firestore: Emulator started at http://localhost:8080
i  firestore: For testing set FIRESTORE_EMULATOR_HOST=localhost:8080
i  hosting: Serving hosting files from: dist
✔  hosting: Local server: http://localhost:5000
✔  hosting: Emulator started at http://localhost:5000
i  functions: Watching "/Volumes/Work/playground/sforce-job/sforce-jobs/functions" for Cloud Functions...
>  here
✔  functions[sendWelcomeEmail]: firestore function initialized.
✔  All emulators started, it is now safe to connect.

Я перехожу на localhost: 5000 и могу использовать свое приложение, как я хочу, но функция не срабатывает. Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 14 ноября 2019

Ответьте себе здесь на случай, если кто-то столкнется с этим: я понял, что нет способа соединить Cloud Firestore с локальной функцией Cloud. Простой способ сделать это - иметь json, который выглядит как DocumentSnapshot, а затем передать его функции через оболочку. Использование:

firebase function:shell
var data = require('./testData.json');
sendwelcomeEmail(data)

Другим способом будет создание локальной базы данных в эмуляторе firestore, наведите облачную функцию на эмулятор firestore. Затем запустите эмулятор хостинга, и все 3 должны хорошо играть.

...