【发布时间】:2021-11-24 14:15:49
【问题描述】:
我是后端编程的新手,我正在尝试路由基于 nodejs 和 expressjs 构建的应用程序,但是。我第一次构建它时没有在 express 中使用“Router()”,但现在我尝试将它与 MVC 集成在一起,但遇到了一些问题。
这是应该路由到 /storePost 的代码的 sn-p:
....在 index.js 文件中:
var express = require('express');
...
var adminRouter = require('./routes/admin');
var indexRouter = require('./routes/index');
app.use('/admin', adminRouter);
app.use('/', indexRouter);
...
...在 admin.js 文件中:
var express = require('express');
var router = express.Router();
...
var bookController = require('../controllers/bookController');
...
router.get('/createBook', bookController.book_create);
router.post('/storeBook' , bookController.book_store);
...
module.exports = router
...在 bookController.js 文件中
var Book = require('../database/models/Book');
...
var book_store = (req, res) => {
try{
var { file } = req.files;
file.mv(path.resolve(__dirname,'public/uploads', file.name), (error) => {
console.log('File loaded to server');
Book.create({
...req.body,
file: `/books/${file.name}`
}, (error) => {
console.log(error);
res.redirect('/displayBook');
});
});
}catch(error) {
console.log(error);
}
};
...
module.exports = {
...
book_store: book_store,
...
}
这是应用程序应该路由的少数几个:
@layout('layouts.admin');
@section('content')
<div class="container p-2 m-4">
<div class="row">
<div class="col-8-md offset-2">
<form class="form-signin" method="POST" action="/storeBook" enctype="multipart/form-data">
...
<button class="btn btn-primary btn-round" type="submit">Create Book</button>
</form>
</div>
</div>
</div>
<style>
</style>
<br>
<br>
@endsection
应用程序在 MongoDB/mongoose 上运行,用于数据库。 这是应用程序抛出的错误:Cannot Post /storeBook。
【问题讨论】:
-
请说明问题,您是否在 admin.js 中导出了路由器?
-
没有名为
storePost的路由。你的意思是storeBook? -
问题是我无法访问我在 admin.js 文件中定义的路由。应用程序似乎无法访问 POST 请求路由。
-
@Christian 我的意思是
storeBook不是storePost。谢谢! -
你是从 admin.js 导出路由器吗?