[英]How to post multiple Axios requests but the number of post request varies
有點上下文,我正在嘗試獲取 JSON 文件數據並用數據填充我的 MongoDB。 我目前這樣做的方式是這樣的:
for (let i = 0; i < data.length; i++) {
await Axios.post("http://localhost:8080/createRawGeopoints", {
time: data[i].time,
lat: data[i].lat,
lng: data[i].lng
}).then((response) => {
console.log("Posted")
});
}
數據object 的長度取決於我試圖讀取的 JSON 文件。 數據示例 object 就是這樣的數據示例。
但是,這種方法花費的時間太長,特別是如果我嘗試發布的 JSON 條目超過 50 個。
是否有另一種方法可以一次性發布所有數據? 但是需要考慮到post請求的數量取決於數據object的長度。 我需要將數據 object 的每個屬性與模式屬性(例如時間、緯度和 LNG)相匹配。
我試圖發布和填充我的數據的 ZCCADCDEDB567ABAE643E15DCF0974E503Z Model 架構如下所示:
const mongoose = require('mongoose');
const RawGeopointSchema = new mongoose.Schema({
time: {
type: String,
required: true,
},
lat: {
type: Number,
required: true,
},
lng: {
type: Number,
required: true,
},
}, {
versionKey: false
});
const RawGeopointModel = mongoose.model("raw-geopoints", RawGeopointSchema)
module.exports = RawGeopointModel;
我的 API 代碼發布數據:
app.post("/createRawGeopoints", async (req, res) => {
const geopoint = req.body;
const newGeopoint = new RawGeopointsModel(geopoint);
await newGeopoint.save();
res.json(geopoint)
})
您的服務器 API 需要接受對象數組。
它會快很多,因為服務器和客戶端之間只有一個網絡請求/響應。 這也意味着一個單一的 axios 請求。
是的,請求主體會更大,但即使服務器重用相同的連接,解析所有這些傳入的 HTTP 請求並產生盡可能多的 HTTP 響應仍然需要更多時間。
此外,由於所有對象可能都可以插入到單個請求中,因此最終與數據庫的通信會少很多。
另外,你應該小心混合async
| 具有函數式風格的await
語法then()
| catch()
承諾。 選擇一個或另一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.