#node.js #express #mongoose #export #router
Вопрос:
Я настроил свой код в server.js что сработало отлично. Сейчас я пытаюсь навести порядок в server.js код путем разделения кода на разные маршруты.
Я пользуюсь экспрессом.Маршрутизатор, чтобы связать файлы, но я изо всех сил пытаюсь понять, почему мой почтовый маршрут тормозит.
В server.js файл
// dependencies
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyparser.urlencoded({extended: true}));
app.set('view engine', 'ejs');
// routes
constpurchaseOrders = require("./routes/purchaseOrders");
app.use("/purchaseOrders", purchaseOrders);
// listen
app.listen(3000, function(){
console.log("Server started on port 3000");
});
В purchaseOrders.js файл
// dependencies
const express = require("express");
let router = express.Router();
const mongoose = require("Mongoose");
const connection = require("../routes/mongoose.js");
const Po = require("../routes/schemas.js:);
// post route
router.post("/addpo, function(req.res){
//long code lines here
po.save();
res.redirect("/");
});
module.exports = router;
Итак, с этим маршрутом у меня есть следующая конечная точка на маршруте.получить:
10.0.0.15:3000/purchaseOrders/addpo
Теперь проблема возникает, когда я отправляю форму, она возвращает «не удается опубликовать /добавить», и конечная точка показывает:
10.0.0.15:3000/addpo
В моем файле ejs я настроил форму следующим образом:
<form action="/addpo" method="post">
На mongoose.js соединение, которое я экспортирую следующим образом:
module.exports = mongoose;
На schemas.js я экспортирую:
module.exports = Po;
Я знаю, что сделал что-то не так с маршрутизацией, но я не могу понять, почему.
Большое спасибо 🙂
Комментарии:
1. Я предполагаю, что эта ошибка только в вопросе, но кавычки неверны.
Ответ №1:
если вам нужен /addpo
путь для работы, измените его на server.js
:
app.use("/", purchaseOrders);
НЕ
app.use("/purchaseOrders", purchaseOrders);
Другой вариант
server.js:
app.use("/addpo", purchaseOrders);
purchaseOrders.js
router.post("/", function(req.res){
Если вы добавите маршрут перед вызовом маршрутизатора, он будет добавлен перед ним.
Таким образом, вы можете использовать маршрут action="/addpo"
в html.
Комментарии:
1. Что ж, это сработало как по волшебству. Спасибо тебе, Хорхе. Единственное, чего я не понимаю, это то, что я ожидаю 10.0.0.15:3000/Заказы на покупку/addpo. Но теперь сообщение работает, потому что оно показывает конечную точку 10.0.0.15:3000/addpo. Знаете ли вы, есть ли способ, чтобы сообщение работало с полными /покупными заказами/addpo. вместо просто /addpo?
2. @Jax да, просто измените действие: действие=»/PurchaseOrders/addpo» и сохраните код в том виде, в каком он у вас был. Если вы нашли ответ полезным, я был бы признателен, если бы вы приняли его. С уважением.
3. Спасибо @Jorge Montejo. Хорошо, что вы помогли мне заставить код работать так, как это было до маршрутизации. Что ломает мой мозг, так это то, что действие=»/PurchaseOrders/addpo» было первым, что я попробовал, что имело для меня смысл, но оно все еще дает мне «не могу опубликовать /addpo» с 10.0.0.15:3000/addpo.