簡體   English   中英

將數據傳遞給 Firebase auth.user().onCreate Cloud Function

[英]Pass Data to Firebase auth.user().onCreate Cloud Function

我正在測試 firebase 雲功能,我很好奇如何將數據從我的表單傳遞到雲 function。 我創建了一個接受多個字段的注冊表單 - 我的計划是使用 firebase 創建一個身份驗證帳戶,並擁有一個雲 function,該雲在創建身份驗證帳戶時運行。 這個 function 將在 Firestore 中創建一個用戶文檔。

下面的代碼給出了我的前端設置的一個想法


import React from "react"
import firebase from "firebase"

// create some config for firebase

const app = firebase.initializeApp(config)
const auth = app.auth()

function Form({onSubmit}){

  function handleSubmit(e){
    e.preventDefault()
    
    const {email, password, firstName, lastName, age} = e.target.elements
    const user = {email: email.value, password: password.value, firstName: firstName.value, lastName: lastName.value, age: age.value}
  
    onSubmit().then(() => {}, (err) => {})
  }
  
  return <form onSubmit={handleSubmite}>
     {/*form fields..*/}
  </form>
}

// Register function for firebase

function register(email, password){
  return auth.createUserWithEmailAndPassword(email, password)
}

// Parent for form component
function Container(){

  return <Form onSubmit={register}/>
}

這是我的雲 function 的樣子:

const functions = require("firebase-functions")
const admin = require("firebase-admin")

admin.initializeApp()
const db = admin.firestore()

const createUser = (userData, context) => {
  const { email } = userData
  console.log(userData)

  return db
    .collection("users")
    .doc()
    .set({
      email,
      firstName: "TEST",
    })
    .catch(console.error)
}

module.exports = {
  authOnCreate: functions.auth.user().onCreate(createUser),
}

知道怎么做嗎? 我想錯了嗎? 我對 firebase 有點陌生。

TLDR; 如何將自定義數據從表單發送到雲 function,這將在 auth 中創建新用戶時在 firestore 中創建用戶?

我的計划是使用 firebase 創建一個身份驗證帳戶,並擁有一個在創建身份驗證帳戶時運行的雲 function。 這個 function 將在 Firestore 中創建一個用戶文檔。

這是不可能的。 由於您的 Cloud Functions 在auth.user().onCreate上觸發,因此它只能訪問該事件可用的信息。 您不能將附加信息傳遞給后台 function。

最常見的解決方案是:

  1. 創建用戶后編寫文檔,直接從客戶端或讓客戶端直接調用另一個 Cloud Function。
  2. 將創建用戶和文檔所需的所有數據傳遞到 Cloud Function,然后讓 Cloud Function 處理用戶帳戶和文檔的創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM