GET /user/42
GET /user/dude
其中42是用戶id和哥們是用戶名。
所以,我想在我的控制器中返回兩種情況下的用戶的方法。這裏是:
// api/controllers/UserController.js
findOne: function(req, res) {
User.findOne({
or: [
{id: req.params.id},
{username: req.params.id}
]
}).exec(function(err, user) {
if (err) {
return console.log(err);
}
res.json(user);
});
},
當我嘗試GET /user/42
一切都很好。
當我嘗試GET /user/dude
我得到錯誤:
Error (E_UNKNOWN) :: Encountered an unexpected error
error: invalid input syntax for integer: "dude"
好像帆拒絕處理{id: 'dude'}
因爲類型不匹配的。
我使用sails-postgresql 0.10.9的風帆0.10.5。那麼我做錯了什麼?
UPD:我知道如何解決問題。當然,我可以把if語句放到我的控制器中,並檢查它得到的參數類型。實際上,我剛創建了兩條路線,它們使用指向單一方法的regexp參數。
我的實際問題是爲什麼我不能用or
來做到這一點。帆是否提供這種方式?
我添加此功能。我根本不使用藍圖。 – 2015-02-26 12:13:57
我添加了一些細節,你需要在路由和控制器中處理這個問題。 – arkoak 2015-02-27 05:58:47
謝謝你的嘗試。我已經upvoted你的答案,但它不能解決我的實際問題。我更新問題以獲取更多詳細信息 – 2015-02-27 09:51:40