[英]Sequential HTTP post requests in node.js
我正在使用 node.js 和 express 將傳感器數據推送到 mongoDB 服務器。 我每秒推送數據大約 5 次(使用 HTTP 發布請求)。
我發送匯總的傳感器數據。 我的傳感器數據看起來像這樣
transmission 1 - 1,2,3
transmission 2 - 4,5,6
transmission 3 - 7,8,9
將我的數據附加到數據庫后,有時看起來像這樣
數據數組 - 1,2,3, 7,8,9 ,4,5,6
如您所見,第三次傳輸附加在第二次傳輸之前
POST 請求處理我的 server.js 的部分看起來像這樣
var app = require("express")();
app.post("/saveData", function(req, res){
res.send("a");//sending acknowledgement
Data_From_NodeMCU = req.body.hello; //getting data from JSON object
////Some processing\\\\
dbObject.updateOne(
{name: "AKILA"},
{'$push': {data :{$each: processed_data} }},
function (err) {
if (err)
{
console.log("DB error:");
console.log(err);
}
}
);
});
看起來我想要實現的是,一旦 app.post 被調用,停止它再次執行,直到數據庫更新。 這可能是一個基本問題,但我對此很陌生,任何幫助都會非常有幫助
您可以使用並發為1
異步隊列。 它會是這樣的:
const app = require("express")();
const queue = require("async/queue");
const q = queue(function(task, cb) {
dbObject.updateOne({name: "AKILA"},
{'$push': {data :{$each: task.processed_data} }}, (err) => {
if (err) console.log("DB error:", err);
cb();
});
}, 1)
app.post("/saveData", function(req, res){
res.send("a"); //sending acknowledgement
const Data_From_NodeMCU = req.body.hello;
const processed_data = processData(Data_From_NodeMCU);
q.push({processed_data});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.