到达路线后,您应该将逻辑放在 Express 应用程序的什么位置?

Where should you put the logic in an Express app, upon reaching a route?

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

当谈到在应用程序中做一些逻辑时,他们似乎总是建议将逻辑放在请求到达时的路由中。例如,在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');
                }
            });
        });
    });

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

您可以尝试这样的操作:

// 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: {
        .....
    }
}