Estoy tratando de iniciar sesión cada vez que se crea y elimina una cuenta.
Creé un disparador functions.auth.user().onCreate() y, según tengo entendido, devuelve un objeto de user como en los documentos: aquí y aquí .
Las funciones se implementan sin problemas, pero cuando se llama al disparador, arroja un error:
Error: Process exited with code 16 at process.<anonymous> (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:92:22) at process.emit (events.js:314:20) at process.EventEmitter.emit (domain.js:483:12) at process.exit (internal/process/per_thread.js:168:15) at sendCrashResponse (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/logger.js:44:9) at process.<anonymous> (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:88:44) at process.emit (events.js:314:20) at process.EventEmitter.emit (domain.js:483:12) at processPromiseRejections (internal/process/promises.js:209:33) at processTicksAndRejections (internal/process/task_queues.js:98:32)Error que no puedo entender.
Aquí está mi código
// functions/index.js const functions = require('firebase-functions') const admin = require('firebase-admin') const { google } = require('googleapis') const { firestore } = require("firebase-admin"); exports.logging = require('./logging'); admin.initializeApp() // And other working functionsLas funciones reales
// functions/logging.js const functions = require('firebase-functions'); const admin = require('firebase-admin'); const { firestore } = require('firebase-admin'); const authUserTrigger = functions.auth.user() exports.userSignup = authUserTrigger.onCreate((user) => { storeUser(user) }) exports.userDelete = authUserTrigger.onDelete((user) => { storeUser(user) }) async function storeUser(user) { // functions.logger.log(user.email) -> this works // Destructured original object let updatedUser = (({ displayName, email }) => ({ displayName, email }))(user); functions.logger.log('updatedUser', updatedUser ) await admin .firestore() .collection('logs') .doc('users') .collection('signup') .set({ user: {updatedUser}, // I think this is the culprint // user, This doesn't work either createTimestamp: firestore.FieldValue.serverTimestamp() }, { merge: true }) };Gracias de antemano
EDITAR ========== @Tanay tenía razón. Necesario cambiar el set para add .
Como dijo @Tanay, no puede usar set() en una colección en Firebase, debe ser un documento. Si desea agregar un documento a la colección con una identificación automática, puede usar add() en la colección con los datos.