第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase 云函數(shù)調(diào)用客戶端腳本

Firebase 云函數(shù)調(diào)用客戶端腳本

慕森卡 2022-10-21 09:34:47
我在 Reactjs 中有一個腳本,它從 api 獲取數(shù)據(jù)(數(shù)字),并在用戶打開頁面時將這些數(shù)字與 Firebase 集合中的數(shù)字相加,并且用戶可以看到這些數(shù)字。應(yīng)用程序中會有很多用戶,每個用戶都會有來自同一個腳本的不同數(shù)字我想知道 Firebase Cloud Functions 是否可以在服務(wù)器上運行此客戶端腳本并在服務(wù)器上執(zhí)行此數(shù)字的計算并將此數(shù)字存儲在 Firestore 集合中。我是 nodejs 和云功能的初學(xué)者我不知道這是否可行從 Api 獲取數(shù)字  getLatestNum = (sym) => {    return API.getMarketBatch(sym).then((data) => {      return data;    });  };我正在嘗試的云功能const functions = require('firebase-functions');const admin = require('firebase-admin');admin.initializeApp();const db = admin.firestore();exports.resetAppointmentTimes = functions.pubsub  .schedule('30 20 * * *')  .onRun((context) => {    const appointmentTimesCollectionRef = db.collection('data');    return appointmentTimesCollectionRef      .get()       .then((querySnapshot) => {        if (querySnapshot.empty) {          return null;        } else {          let batch = db.batch();          querySnapshot.forEach((doc) => {            console.log(doc);          });          return batch.commit();        }      })      .catch((error) => {        console.log(error);        return null;      });  });
查看完整描述

1 回答

?
隔江千里

TA貢獻1906條經(jīng)驗 獲得超10個贊

確實可以從 Cloud Function 調(diào)用 REST API。您需要使用返回 Promises 的 Node.js 庫,例如axios。


在您的問題中,您想寫哪些特定的 Firestore 文檔并不是 100% 清楚,但我假設(shè)它將在批量寫入中完成。


因此,以下幾行應(yīng)該可以解決問題:


const functions = require('firebase-functions');

const admin = require('firebase-admin');

const axios = require('axios');


admin.initializeApp();

const db = admin.firestore();


exports.resetAppointmentTimes = functions.pubsub

.schedule('30 20 * * *')

.onRun((context) => {

    

    let apiData;

    return axios.get('https://yourapiuri...')

        .then(response => {

            apiData = response.data;  //For example, it depends on what the API returns

            const appointmentTimesCollectionRef = db.collection('data');

            return appointmentTimesCollectionRef.get();           

        })

        .then((querySnapshot) => {

            if (querySnapshot.empty) {

                return null;

            } else {

                let batch = db.batch();

                querySnapshot.forEach((doc) => {

                    batch.update(doc.ref, { fieldApiData: apiData});

                });

                return batch.commit();

            }

        })

        .catch((error) => {

            console.log(error);

            return null;

        });

});

有兩點需要注意:

  1. 如果您想將 API 結(jié)果添加到某些字段值,您需要提供更多關(guān)于您的確切需求的詳細信息

  2. 重要提示:您需要使用“Blaze”定價計劃。事實上,免費的“Spark”計劃“只允許向 Google 擁有的服務(wù)發(fā)出出站網(wǎng)絡(luò)請求”。請參閱https://firebase.google.com/pricing/(將鼠標(biāo)懸停在“云功能”標(biāo)題后面的問號上)


查看完整回答
反對 回復(fù) 2022-10-21
  • 1 回答
  • 0 關(guān)注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號