Заявление
Прежде всего позвольте мне сказать, что команда Firebase является лучшей.
Код
//Firebase Cloud Functions
const functions = require('firebase-functions');
// Firebase Admin SDK
const admin = require('firebase-admin');
admin.initializeApp(); //initialize the admin sdk
//UUID
const uuidv1 = require('uuid/v1');
exports.setupProfile= functions.auth.user().onCreate((user) => {
const email = user.email; // The email of the user.
const displayName = user.displayName; // The display name of the us
const pid = uuidv1(); // public id
//****************
//create a set of items visible to others
return admin.database().ref('/users-public/' + pid).push({"displayName": displayName,"profile-pic-path":""});
//user's private information
return admin.database().ref('/users-private/' + user.uid).push({"displayName": displayName, "pid": pid,"email":email,"dob": "","address": "","age": "","zip-code":""});
//****************
});
Чего я хочу достичь / понять
Я работаю над логикой для создания пользовательских профилей / настроек по умолчанию, когда пользователь регистрируется впервый раз.
Что я понимаю до сих пор
Триггеры аутентификации, как и все другие фоновые функции, имеют асинхронное значение, если человек A и человек B регистрируются одновременно, и функция выше запускается для обоихни человек A, ни человек B не должны ждать завершения функции setupProfile другого человека.По сути, два разных потока.
Вопросы
- Должны ли линии между звездочками находиться внутри метода async (), чтобы весь этот процесс был действительно асинхронным, или это означало бы, что его помещениевнутри async () будет по существу порождать другой поток из запущенного потока?
- Не стоит ли мне беспокоиться о async (), потому что я должен думать о каждом триггере как о своем собственном потоке, поэтому любые задачи в этом триггере будут частью этогоодин поток (начальный триггер), и нет никакой дополнительной выгоды для порождения другого потока.Я должен просто вернуть обещание и назвать его днем.
Пожалуйста, дайте мне знать, если мне нужно кое-что прояснить.-LK
Рабочий код
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(); //initialize the admi sdk
exports.setupProfile = functions.auth.user().onCreate((user, context) => {
return Promise.all([
admin.database().ref("/users-public/" + user.uid).set({ "displayName": ""}),
admin.database().ref('/users-private/' + user.uid).set({ "displayName": "", "email": user.email, "phone": "", "dob": "", "address": "", "age": "", "zip-code": ""})
]).then((results)=> {
console.log("New user: " + user.uid);
});
});