在到达路线时,您应该将逻辑放在Express应用程序中的哪个位置?

时间:2015-02-10 14:41:28

标签: node.js express routes logic

我一直在阅读一些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');
                }
            });
        });
    });

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

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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