2015-02-10 3 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). –

+0

@BenFortune спасибо за ссылку. Это похоже на то, что предлагает пользователь3776269. Я попробую это – CodyBugstein

ответ

2

Вы можете попробовать Somthing так:

// 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

+0

Я рад, если это поможет вам – siavolt

Смежные вопросы