2015-04-01 57 views
0

我想在快速應用程序中爲REST樣式路由製作一些通用處理程序。明確的通用路由處理程序

它們被定義在一個對象中,然後它與在特定路徑文件中定義的屬性合併。屬性的合併工作正常。我的問題是以某種方式將我的模型對象傳遞給處理程序的匿名函數。

下面的代碼是最明顯的嘗試,顯示我正在嘗試做什麼,但顯然失敗,因爲Model在匿名函數的作用域中丟失。我看了幾個選項,並且Node/Express和Connect中間件還是比較新的,所以可能會有更明顯的東西丟失。

回答

0

我通過簡單地調用mongoose.model解決該問題:

routeDefinitions: function (resourceName) { 
    routePath = api_prefix + resourceName.toLowerCase(); 
    var modelName = inflect.singularize(resourceName); 
    var Model = mongoose.model(modelName); 

    var routeProperties = { 
     getById: { 
      method: 'get', 
      isArray: false, 
      auth: true, 
      url: routePath + '/:id', 
      handlers: [function (req, res, next) { 
       Model.findById(req.param('id')).exec(res.handle(function (model) { 
        console.log(model); 
        res.send(model); 
       })); 
      }] 
     }, 
     getAll: { 
      method: 'get', 
      isArray: true, 
      auth: true, 
      url: routePath, 
      handlers: [function (req, res, next) { 
       Model.find().exec(res.handle(function (model) { 
        res.send(model); 
       }));   
      }] 
     }, 
     //... (create, update, delete etc) 
    } 
} 
相關問題