我問這個問題是因為我在網上的任何地方都找不到這樣的問題。
我從 React 應用程式發布對 mongodb 資料庫的更新,以更新物件的 x 和 y 位置,或物件內的組件(“小部件”)。
這適用于 6 個對資料庫的“updatePage”的 post 呼叫,以添加或洗掉小部件或移動頁面。但是在第 6 次呼叫之后,它不再接受對資料庫的任何帖子(React 狀態將繼續更改,但就好像路由器不再接受任何傳入資訊一樣)。
我不知道可以在節點中發布的連續帖子數量的某處是否有限制設定?還是我的代碼有問題?我發現我從未收到來自節點路由器的回應呼叫(無論 post 方法是否成功...),這很不尋常。
下面是從 React 端呼叫路由更新后的代碼:
function saveUpdatedPage (update, id) {
console.log("updating DB for ",update)
Api.withToken().post('/pageupdate/' id,
update
).then(function (response) {
console.log("post function returned: ",response.data)
}).catch(function (error) {
console.log("page save failed for some reason: ",error.response);
});
}
這是路由器中的 post 方法:
router.post('/pageupdate/:_id',auth, async(req,res)=>{
console.log("received request to update: ",req.body," id ",req.params);
const filter = { "_id": req.params };
const update = [{ $set: req.body }];
let updatedDoc = await Pages.findOneAndUpdate(filter, update, {returnNewDocument: true})
});
這是快速標頭設定等...如果它們有幫助的話
const app = express()
app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
next();
});
app.use(userRouter)
app.use(pageRouter)
app.use(express.static(path.join(__dirname, '../front/build')));
這是移動頁面 7 次后的控制臺(6 次成功發布到資料庫,此后不會成功呼叫)
React 控制臺顯示頁面狀態和發送的資料庫呼叫

節點控制臺在第 6 個帖子后停止記錄任何帖子

uj5u.com熱心網友回復:
為什么 axios post 方法在連續 6 次 post 呼叫后停止作業?
這可能是因為您的原始代碼沒有向客戶端發送任何回應。瀏覽器對允許對同一主機進行的請求數量有限制。一旦達到該限制,它就會對請求進行排隊,并在發送排隊的請求之前等待前一個請求完成。
因此,一旦您添加res.send(...)到您的 POST 處理程式(對于成功和錯誤條件),那么瀏覽器就不會達到對同一主機的同時請求限制,您可以發送更多請求就好了。
uj5u.com熱心網友回復:
我是一個白癡。出于某種原因,我已經將 try 和 catch 塊從路由器中的 post 方法中洗掉了。這就是為什么它沒有從路由器給出任何回應!
我不知道為什么資料庫在沒有 try/catch 塊的情況下成功更新了 6 次。但是添加 try catch 和 response 允許它無休止地更新。
(請參閱下面帶有 try 和 catch 的更新路由器 post 方法)
router.post('/pageupdate/:_id',auth, async(req,res)=>{
console.log("received request to update: ",req.body," id ",req.params);
const filter = { "_id": req.params };
const update = [{ $set: req.body }];
try{
let updatedDoc = await Pages.findOneAndUpdate(filter, update, {returnNewDocument: true});
res.status(201).send(updatedDoc)
}
catch(e){
console.log(e);
res.status(400).send(e)
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/343602.html
