这是我想要实现的目标的一个想法。使用云函数,有没有办法在不使用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 在页面加载时完成这些更新。然而,这也带来了自身的挑战。
四季花海
相关分类