Как получить событие выполнения облачной функции Google в node.js с помощью firestore - PullRequest
0 голосов
/ 12 июня 2018

enter code here Ниже приведена облачная функция Google, она правильно развернута и работает нормально. Функция / index.js

const functions = require('firebase-functions');
const admin = require("firebase-admin");
admin.initializeApp();

exports.createUser = functions.firestore
.document('users/{userId}')
.onCreate((snap, context) => {
    const newValue = snap.data();
    console.log(newValue);
});

как получить доступ к событию этой функции при успешном вызове в node.jsприложение что-то вроде

const myFunctions = require("./functions/index");

myFunctions.createUser().then((data) => {
    console.log(data)
})
.catch((err) => {
    console.log(err);
})

По состоянию на теперь становится ниже ошибка enter image description here

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Ваша createUser облачная функция запускается типом события Firestore onCreate() и, следовательно, будет «запускаться при первом написании документа», согласно документации .

Документ также добавляет следующее:

В типичном жизненном цикле функция облачного хранилища выполняет следующие действия:

  1. Ожидание изменений в определенномдокумент.(В этом случае, когда документ пишется впервые)

  2. Пуски, когда событие происходит и выполняет его задачи

  3. Получение данныхобъект, который содержит снимок данных, хранящихся в указанном документе.

Поэтому, если вы хотите запустить эту облачную функцию из «внешнего мира», например, из приложения node.js, вам необходимо создать новый документ Firestore всоответствующее местоположение, т.е. под коллекцией users.Для этого вы должны использовать Node.js Server SDK, см. https://cloud.google.com/nodejs/docs/reference/firestore/0.14.x/

Обратите внимание, что вы также можете запустить его из клиентского приложения (web, android, iOS), создав новый документ user ссоответствующий клиентский SDK.


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

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

В вашем случае вы должны использовать Node.js Server SDK (как упомянуто в моем комментарии), и вы можете использовать onSnapshot метод CollectionReference.См https://cloud.google.com/nodejs/docs/reference/firestore/0.14.x/CollectionReference#onSnapshot

0 голосов
/ 12 июня 2018

Я постараюсь ответить на ваш вопрос, но это немного неясно.Вы спросили:

Как получить событие выполнения облачной функции Google

Ну, событие началось, когда функция сработает и ваш код запущен, т.е. ваша строка const newValue = snap.data()

Может быть, вы ищете способ выполнения определенных задач после запуска триггера?Вы просто делаете это изнутри функции и возвращаете обещание.Например, если у вас есть несколько асинхронных задач, вы можете использовать Promise.all ([]).

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