我被分配了一個獲取 JSON API 的任務,并決議一個 XML 提要 URL 并將它們的回應存盤在單獨的 Firestore 集合中。我不太擅長云函式,但經過大量研究,我為 JSON API 撰寫了下面的云函式代碼,并且運行良好。
const functions = require("firebase-functions");
const axios = require("axios");
const admin = require("firebase-admin");
const api_token = "XXXXXXX";
const includes = "XXXXXX";
const url = "https://XXXXXXXXXXXXXX.com/?api_token=" api_token includes;
exports.allLeagues = functions.region('europe-west1').https.onRequest(async (req, res) => {
try {
let response = await axios.get(url);
var data = response.data.data;
for (let leagueData of data) {
await admin.firestore().collection("leagues").doc(leagueData.id.toString()).collection("all_data").doc(leagueData.id.toString()).set({
id : leagueData.id,
name : leagueData.name,
logo_path : leagueData.logo_path,
is_cup : leagueData.is_cup
});
}
console.log("Table complete...");
console.log("successful");
return res.status(200).json({ message: "successful" });
} catch(error) {
console.log("Error encountered: " error);
return res.status(500).json({ error });
}
});
我已經完成了 JSON API。但是對于 XML 提要,我不知道從哪里開始。我做了很多研究無濟于事。我在 Stackoverflow 上找到了這個,但它不能滿足我的需要。假設這是我的提要:https ://www.feedforall.com/sample.xml ,請問如何決議它并將專案保存在 Firestore 中?請幫忙。謝謝你。
uj5u.com熱心網友回復:
您可以使用rss-parser,它可用于從 RSS 提要中獲取資料或從 XML 字串中決議,如下所示:
// npm install rss-parser
const Parser = require("rss-parser");
const parser = new Parser();
exports.rssFeedParser = functions.https.onRequest(
async (request, response) => {
const rssUrl = "https://www.feedforall.com/sample.xml";
const feed = await parser.parseURL(rssUrl);
const { items } = feed;
const batch = db.batch();
items.forEach((item) => {
const docRef = db.collection("rss").doc();
// restructure item if needed
batch.set(docRef, item);
});
await batch.commit();
response.send("Done");
}
);
請注意,您最多只能使用上述答案中的批量寫入添加多達 500 個檔案。如果您的 Feed 可以回傳更多,那么您應該創建多批 500 個或單獨添加它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/508612.html
標籤:Google Cloud Collective 节点.js xml 火力基地 谷歌云火库 谷歌云功能
