【问题标题】:Where should you put the logic in an Express app, upon reaching a route?到达路线后,您应该将逻辑放在 Express 应用程序的什么位置?
【发布时间】:2015-04-10 15:33:36
【问题描述】:

我一直在阅读一些 Node.JS、Express 教程,我发现了一些有趣的东西。

在应用程序中执行一些逻辑时,他们似乎总是建议将逻辑放在请求到达时的路由中。例如,在this tutorial 中,一些逻辑甚至变得很长:

    //Delete a book
    app.delete( '/api/books/:id', function( request, response ) {
        BookModel.findById( request.params.id, function( err, book ) {
            return book.remove( function( err ) {
                if( !err ) {
                    console.log( 'Book removed' );
                    return response.send( '' );
                } else {
                    console.log( err );
                    return response.send('ERROR');
                }
            });
        });
    });

有没有更好的方法来组织这个逻辑?例如,您可以将逻辑放在另一个文件中(考虑到我的项目在某些路由中需要大量逻辑)?如果是,如何将其引用到路由文件中?

【问题讨论】:

  • 只需将控制器移动到外部文件并需要它。 Prime example.
  • @BenFortune 感谢您的链接。它似乎类似于 user3776269 的建议。我试试看

标签: node.js express routes logic


【解决方案1】:

你可以试试这样的:

// app.js

var routes = require('./routes.js');
app.delete( '/api/books/:id', routes.book.delete);
app.get(    '/api/books/:id', routes.book.getBook);

// routes.js

module.exports = {
    books: {
        delete: function(request, response){
            BookModel.findById( request.params.id, function( err, book ) {
                return book.remove( function( err ) {
                    if( !err ) {
                        console.log( 'Book removed' );
                        return response.send( '' );
                    } else {
                        console.log( err );
                        return response.send('ERROR');
                    }
                });
            });
        },
        getBook: function(req, res){
            .....
        }
    },
    user: {
        .....
    }
}

【讨论】:

  • 如果能帮到你我很高兴
猜你喜欢
  • 1970-01-01
  • 2017-10-11
  • 2012-03-03
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 2021-06-08
  • 1970-01-01
相关资源
最近更新 更多