Я впервые использую стек MERN для создания приложения.
Для регистрации HTTP-запросов я использую «morgan».
Мне удалось отправить данные на mongodb, который, кажется, работает нормально. Проблема в том, что мой почтовый запрос не приходит. Он говорит «ожидает» в течение 4 минут, затем завершается неудачей.
Вот, что я думаю, является важной частью моего кода:
"сервер. js":
const express = require("express");
const mongoose = require("mongoose");
const morgan = require("morgan");
const path = require("path");
const cors = require("cors");
const app = express();
const PORT = process.env.PORT || 8080;
const routes = require("./routes/api");
const MONGODB_URI =
"...";
mongoose.connect(MONGODB_URI || "mongodb://localhost/app", {
useNewUrlParser: true,
useUnifiedTopology: true
});
mongoose.connection.on("connected", () => {
console.log("Mongoose is connected.");
});
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cors());
app.use(morgan("tiny"));
app.use("/api", routes);
app.listen(PORT, console.log(`Server is starting at ${PORT}`));
Затем я поместил мои маршруты в другой файл "api. js":
const express = require("express");
const router = express.Router();
const Lane = require("../models/lanes");
router.get("/", (req, res) => {
Lane.find({})
.then(data => {
res.json(data);
console.log("Get request successful!");
})
.catch(error => {
console.log("Error: ", error);
});
});
router.post("/save", (req, res) => {
const data = req.body;
const newLane = new Lane();
newLane.collection.insertMany(data, err => {
if (err) {
console.log(err);
} else {
console.log("Multiple docs inserted");
}
});
});
module.exports = router;
Я использую топор ios для отправки запроса. Это происходит после отправки формы в моем приложении.
функция редуктора:
const reducer = (state, action) => {
switch (action.type) {
case "add":
axios({
url: "http://localhost:8080/api/save",
method: "POST",
data: [...state, { id: uuid(), title: action.title, tasks: [] }]
})
.then(() => {
console.log("Data has been sent to the server");
})
.catch(() => {
console.log("Internal server error");
});
return [...state, { id: uuid(), title: action.title, tasks: [] }];
Редуктор используется моим компонентом провайдера контекста, который выглядит следующим образом:
export function LanesProvider(props) {
const [lanes, dispatch] = useReducer(reducer, defaultLanes);
return (
<LanesContext.Provider value={lanes}>
<DispatchContext.Provider value={dispatch}>
{props.children}
</DispatchContext.Provider>
</LanesContext.Provider>
);
}
Метод "add" внутри моего редуктора вызывается при отправке формы внутри другого компонента.
Пожалуйста, дайте мне знать, могу ли я добавить что-нибудь к своему вопросу, которое могло бы помочь.
Заранее спасибо!