2015-02-10 43 views
2

我一直在閱讀一些Node.JS,Express教程,我意識到有趣的東西。在達到路線時,您應該將邏輯放在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'); 
       } 
      }); 
     }); 
    }); 

有沒有更好的方式來組織這樣的邏輯?例如,你可以把邏輯放在另一個文件中(考慮到我的項目在一些路由中需要很多邏輯)?如果是的話,你如何將它引用到路徑文件中?

+0

控制器只需移動到外部文件,並需要它。 [主要示例](https://github.com/TryGhost/Ghost/blob/master/core/server/routes/frontend.js)。 – 2015-02-10 14:48:52

+0

@BenFortune感謝您的鏈接。這似乎與user3776269的建議類似。我會試試 – CodyBugstein 2015-02-10 14:58:56

回答

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

如果這樣的話,它看起來很棒 – CodyBugstein 2015-02-10 14:57:46

+0

我很高興如果那對你有幫助 – siavolt 2015-02-10 15:05:41

相關問題