首页 > 解决方案 > 为什么 fetch 返回空 opj 到 server.js 文件

问题描述

单击生成时,我正在尝试将数据从 app.js 发送到 server.js .. 数据成功来自 api,控制台记录并保存到对象成功,控制台也成功记录,但是当我尝试发送它时到服务器端它收到一个空对象。

我的 app.js 代码

// Personal API Key for OpenWeatherMap API
let baseurl = "http://api.openweathermap.org/data/2.5/weather?zip=";
let apikey = "MY API KEY";
let user_zip;
/* Function to GET Web API Data*/
let dataToSend = {};
getweather = async () => {
  user_zip = document.querySelector("#zip").value;
  user_input = document.querySelector("#feelings").value;
  if (user_zip == "") {
    alert("Sorry My App Cant Send Empty Request to the API ");
  } else {
    let res = await fetch(baseurl + user_zip + apikey);
    try {
      var data = await res.json();
      var temp = Math.floor(data.main.temp - 273.15);
      var date = new Date();
      dataToSend.date = date;
      dataToSend.temp = temp;
      dataToSend.feels = user_input;
      console.log(data);
      console.log(dataToSend);
    } catch (error) {
      console.log("error", error);
    }
  }
};
/* Function to POST data */
let postdata = async (url = "", data = {}) => {
  let request = await fetch(url, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(dataToSend),
  });
};
// Event listener to add function to existing HTML DOM element
let clicking = document.getElementById("generate");
clicking.addEventListener("click", (event) => {
  getweather();
  postdata("/all", dataToSend);
});

   

和我的 server.js 代码

/* Empty JS object to act as endpoint for all routes */
projectData = [];
/* Express to run server and routes */
const express = require("express");
/* Start up an instance of app */
const app = express();
/* Dependencies */
const bodyParser = require("body-parser");
/* Middleware*/
app.use(
  bodyParser.urlencoded({
    extended: false,
  })
);
app.use(bodyParser.json());
const cors = require("cors");
const { request } = require("http");
app.use(cors());
/* Initialize the main project folder*/
app.use(express.static("website"));
app.use(
  express.json({
    limit: "1mb",
  })
);
const port = 3000;
/* Spin up the server*/
const server = app.listen(port, listening);
function listening() {
  // console.log(server);
  console.log(`running on localhost: ${port}`);
}
// Callback function to complete GET '/all'
app.post("/all", (req, response) => {
  projectData.push(req.body);
  console.log(projectData);
});
// Post Route

一些返回 服务器返回空对象

但我保存了数据!

标签: javascriptnode.jsfetch

解决方案


推荐阅读