将变量从一个app.post()函数传递给另一个

时间:2020-06-10 07:35:04

标签: node.js express socket.io

所以我的server.js文件中有两个功能,一个是POST请求,用于推送来自传感器的传入数据,使用了私有API密钥:app.post(/api/:key/)

另一个用于将结果数据推送到mongoDB集合:app.post('/saveData')

下面的代码尽我所能,我所做的就是通过testArray方法将conCat变量传递到全局数组splice()中。然后,我在app.post('/ saveData')函数中将testArray作为参数传递。

server.js

var express = require("express");
var cors = require("cors");
var bodyParser = require("body-parser");
var app = express();
var mongoose = require("mongoose");
var Users = require("./routes/Users");
let db = require("./database");
var port = process.env.PORT || 5000;

const server = require("http").Server(app);
const io = require("socket.io")(server);
server.listen(8070);
io.sockets.on("connection", function (socket) {
  socket.on("create_room", function (room) {
    console.log(chalk.green("User Joined:", room));
    socket.join(room);

  });
});


app.use(bodyParser.json());
app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use("/users", Users);

const mongoURI = "my_connection_string";

mongoose
  .connect(mongoURI, { useNewUrlParser: true })
  .then(() => console.log("MongoDB Connected"))
  .catch((err) => console.log(err));

var arrayTest = [];

app.post("/api/:key", function (request, response) {
  var key = request.params.key;
  var myData = request.body;
  io.sockets.in(key).emit("myData", { myData, key });
  response.send({
    myData,
    key,
  });
  var conCat = [key, myData];
  console.log(conCat);
  arrayTest.splice(0, 1, conCat)

});

db.onConnect(() => {

  let SavedData = require('./models/sdata');
  let savedData = new SavedData();

    //post data to DB
    app.post('/saveData',  function(req, res) {

    console.log(req.body)
    res.send(200)
    savedData.addnewSave(arrayTest)
    console.log("User clicked save button")) 

  });
});



这个问题是,它似乎是静态的(以及def noob-y),也可能有多个传感器通过/api/:key端点发送数据,并且显然,它确实无法工作很好,因为它不考虑数据或键的更改。

我希望有人可以向我展示将变量动态传递给另一个函数的最佳方法,以便它可以解释数据的变化。我确实看到使用callback()是有前途的,但是我不确定当它在快速app.post()函数中时如何使用它。

该项目的性质要求使用另一个端点:app.post('/saveData')为用户提供保存数据的选项,否则我将只在/api/:key函数内删除了saveData.addnewSave(conCat)。

如果您读了这么多,谢谢。

0 个答案:

没有答案