這是我想要實現的目標的一個想法。使用云函數,有沒有辦法在不使用axios的情況下獲取API數據?有沒有辦法在預定的 pubsub 函數中獲取這些數據?const functions = require('firebase-functions');const axios = require('axios');const cors = require('cors')({ origin: true });exports.getVehicles = functions.https.onCall((req:any, res:any) => { cors(req, res, () => { if (req.method !== "GET") { return res.status(401).json({ message: "Not allowed" }); } return axios.get('https://api.zubiecar.com/api/v2/zinc/vehicles', { method: 'GET', // or 'PUT' headers: { 'Content-Type': 'application/json', "Zubie-Api-Key": "123456789" }, }) .then((response:any) => { console.log(response.data); return res.status(200).json({ message: response.data.ip }) }) .catch((err:any) => { return res.status(500).json({ error: err }) }) }) }); exports.updateDriverLocation = functions.pubsub.schedule('every 2 minutes').onRun(async(context:any) => { //return array of driver objects from api const update = await getVehicles(); //database const DB = admin.firestore() const REF = DB.collection("drivers") const BATCH = DB.batch() //update firestore with api response update.forEach((vehicle:any) => { BATCH.set( REF.doc(vehicle.nickname), {vehicle}, { merge: true } ) }) await BATCH.commit() return null; });本質上,我希望使我的 Firestore 數據庫與 Zubie API 保持同步,該 API 每兩分鐘更新一次車輛位置。或者,我使用 nextJS 并探索使用 useSWR 在頁面加載時完成這些更新。然而,這也帶來了自身的挑戰。
使用 Firebase Cloud Functions,我可以安排從外部 API 進行更新來
不負相思意
2023-08-18 14:28:10