Как создать облачную функцию и запустить ее в Cloud Firestore

Я новичок в Cloud Firestore, я хочу создать функцию, когда новый пользователь был добавлен в Firestore, он генерирует уникальное случайное число и сохраняет его в документе. Как я могу добиться этого с помощью Google Cloud Console?

Вы про Консоль Firebase?

Alex Mamo 29.05.2018 19:31

Да @AlexMamo ..

DareDevil 29.05.2018 19:43

Я хотел знать обратное - удаление данных при удалении пользователя. Мой собственный ответ на мой вопрос может дать вам некоторые подсказки. stackoverflow.com/questions/49367260/…

CodeChimp 29.05.2018 19:51
1
3
399
1

Ответы 1

Вы можете добиться этого, просто нажав кнопку ADD COLLECTION, которая выглядит так:

Появится новое всплывающее окно, которое выглядит так:

Назовите свою коллекцию как хотите. Я назвал его Products. Нажмите NEXT, и снова появится новое всплывающее окно:

Оставьте поле Document id пустым. Выберите поле (я назвал id productName) и значение типа String с именем Milk.

Вот результат:

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

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

exports.yourFunction = functions.firestore.document("notifications/{uid}/userNotifications/{notificationId}").onWrite(event => {
    const uid = event.params.uid;
    const notificationId = event.params.notificationId;

    return admin.firestore().collection("notifications").doc(uid).collection("userNotifications").doc(notificationId).get().then(queryResult => {
        const uid = queryResult.data().senderUid;
        const notificationMessage = queryResult.data().notificationMessage;

        const fromUser = admin.firestore().collection("users").doc(senderUid).get();
        const toUser = admin.firestore().collection("users").doc(uid).get();

        return Promise.all([fromUser, toUser]).then(result => {
            const fromUserName = result[0].data().userName;
            const toUserName = result[1].data().userName;
            const tokenId = result[1].data().tokenId;

            const notificationContent = {
                notification: {
                    title: "Your Title",
                    body: notificationMessage,
                    icon: "default",
                    sound : "default"
                }
            };

            return admin.messaging().sendToDevice(tokenId, notificationContent).then(result => {
                console.info("Notification sent!");
            });
        });
    });
});

Таким образом, когда выполняется новая операция записи по этому пути notifications/{uid}/userNotifications/{notificationId}, другими словами, появляется новый документ, мы можем создать Promise и отправить уведомление.

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

DareDevil 29.05.2018 20:15

Я спросил вас, хотите ли вы добиться этого с помощью консоли Firebase, и вы ответили утвердительно. Но, согласно вашему комментарию, см. Мой обновленный ответ.

Alex Mamo 29.05.2018 20:26

Да. Я ответил: «Да», потому что это было связано с Firesase Cloud, но с использованием функции, которую нам нужно достичь, очевидно, через консоль.

DareDevil 29.05.2018 20:43

Теперь я понял. Надеюсь, моя вышеуказанная функция решит вашу проблему.

Alex Mamo 29.05.2018 20:47

Вы пробовали мое решение выше, все в порядке?

Alex Mamo 30.05.2018 06:24

Другие вопросы по теме