2016-09-20 181 views
3

我想創建一個動態路由。 我創建了一個名爲users的API。我需要訪問/ users /:nameofuser,就像自動創建的用戶/ ID一樣。SailsJs中的動態路由

如何在這種類型的url中獲取用戶名,並在數據庫中執行一個用於搜索的控制器?

我嘗試用這個代碼routes.js,但它不爲我工作:

'users/:name': 'UserController.getUser', 

'users/all/:name': 'UserController.getUser' 

我總是收到一個404錯誤有這樣的文字:沒有與指定id找到記錄。

+0

在apis中,通常使用它來調用API。您可以使用[水線查詢語言](http://sailsjs.org/documentation/concepts/models-and-orm/query-language)通過名稱查詢 – Craicerjack

回答

1

users/:id自動轉到UserController.find。如果此操作在控制器中不存在,則它使用缺省藍圖操作,該操作需要一個ID參數。爲了解決你的問題,你可以簡單地覆蓋find方法:

find: function (req, res) { 
    var name = req.param('id'); 
    User.findOne({name: name}).exec(function(err, user) { 
     if (err) {return res.serverError(err);} 
     return res.json(user); 
    }); 
} 

但是如果你仍然想獲得用戶的ID,你應該創建一個額外的路線:

'users/:name': 'UserController.getUser', 

getUser: function (req, res) { 
    var name = req.param('name'); 
    User.findOne({name: name}).exec(function(err, user) { 
     if (err) {return res.serverError(err);} 
     return res.json(user); 
    }); 
}