簡體   English   中英

具體來說,Reactjs是如何從firebase function觸發器中取出數據的?

[英]Specifically, how does Reactjs retrieve data from firebase function triggers?

我正在使用 express 創建我的 firebase 函數,並且我了解如何創建常規可調用函數。 然而,我迷失了為后台實現觸發功能的確切方式(即 onCreate、onDelete、onUpdate、onWrite),以及前端的 Reactjs 應該如何接收數據。

我的場景是一個使用 react 的通用聊天系統,firebase 具有快速和實時數據庫功能。 我通常對在有人發送消息時使用觸發器來更新另一個用戶的前端數據的過程感到困惑。

我很難找到有關這些問題組合的教程或文檔。 生命周期的任何鏈接或基本程序示例都會很棒。

我理解的部分是編寫觸發器 function 的方式:

exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
    .onWrite((change, context) => {
      // Only edit data when it is first created.
      if (change.before.exists()) {
        return null;
      }
      // Exit when the data is deleted.
      if (!change.after.exists()) {
        return null;
      }
      // Grab the current value of what was written to the Realtime Database.
      const original = change.after.val();
      console.log('Uppercasing', context.params.pushId, original);
      const uppercase = original.toUpperCase();
      // You must return a Promise when performing asynchronous tasks inside a Functions such as
      // writing to the Firebase Realtime Database.
      // Setting an "uppercase" sibling in the Realtime Database returns a Promise.
      return change.after.ref.parent.child('uppercase').set(uppercase);
    });

但我不明白這是如何被調用的,也不知道數據是如何到達前端代碼的。

后台函數不能向客戶端返回任何內容。 它們在某個事件之后運行,在這種情況下即onWrite() 如果您想將/messages/{pushId}/original的數據更新給其他用戶,那么您必須使用Firebase 客戶端 SDK來監聽該路徑:

import { getDatabase, ref, onValue} from "firebase/database";

const db = getDatabase();
const msgRef = ref(db, `/messages/${pushId}/original`);

onValue(msgRef, (snapshot) => {
  const data = snapshot.val();
  console.log(data)
});

您還可以使用onChildAdded()收聽/messages/${pushId}以獲取有關該路徑下任何新節點的通知。

暫無
暫無

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

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