Я пытаюсь передать строку из внешнего интерфейса в бэкэнд, но я наткнулся на контрольно-пропускной пункт.Я использую Node, Express, Body Parser, EJS и PostgreSQL.Моя базовая файловая система такова:
– app
|– api
| |– thing.js
|
|– index.js
– views
|– pages
|– index.ejs
У меня есть представление формы в index.ejs, которое передает данные в файл index.js:
index.ejs
<form action="/creatething" method="post">
<h1>Make a thing</h1>
<p> What is your thing called?
<input name="wtitle" type="text">
</p>
<p> What is your name?
<input name="cuser" type="text">
</p>
<input type="submit" value="Submit">
</form>
Приведенный выше код запускает / creatething, который помещается в index.js
index.js
const express = require ('express');
const thingRouter = require('./api/thing');
const bodyParser = require("body-parser");
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: false}));
app.use('/thing', thingRouter);
app.get('/', function (req, res){
res.render('pages/index');
});
app.post('/creatething',(req,res)=>{
console.log('clicked '+ req.body);
});
module.exports= app;
С этим я могу создать в консоли сообщение, которое печатаетпользовательский ввод из формы.Однако я пытаюсь отправить эти данные в базу данных с помощью кода в thing.js:
thing.js
const {Router} = require('express');
const router = new Router();
router.get('/',(req,res)=> {
console.log(req.body);
// Placeholder for working code that stores thing in database :)
});
module.exports = router;
Проблема в том, что я не знаю, как передатьданные req.body из файла index.js в метод thing.js, который вставляет данные в базу данных.Я мог бы просто добавить код базы данных в файл index.js, но я пытался держать вещи более разделенными и узнавать о маршрутизации / монтировании.Чего мне не хватает в этот момент?