【问题标题】:making routes in node js with MVC使用 MVC 在节点 js 中创建路由
【发布时间】: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 导出路由器吗?

标签: node.js express routes


【解决方案1】:

我认为你犯了错误。 您应该将 POST 请求发送到 /admin/storeBook 而不是 /storeBook。

【讨论】:

    猜你喜欢
    • 2017-08-13
    • 2020-02-13
    • 1970-01-01
    • 2020-06-09
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多