簡體   English   中英

如何發布多個 Axios 請求但發布請求的數量不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM