【发布时间】:2015-04-26 17:25:59
【问题描述】:
给定路线
GET /user/42
GET /user/dude
其中 42 是用户 ID,dude 是用户名。
所以,我想在我的控制器中有一个方法,在这两种情况下都返回用户。这里是:
// 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 时出现错误:
错误 (E_UNKNOWN) :: 遇到意外错误
错误:整数的输入语法无效:“dude”
似乎sails 拒绝处理{id: 'dude'},因为类型不匹配。
我正在使用sails 0.10.5 和sails-postgresql 0.10.9。那我做错了什么?
UPD:我知道如何解决问题。当然,我可以将 if 语句放入我的控制器并检查它得到的参数类型。实际上,我刚刚创建了两条带有正则表达式参数的路由,它们指向单个方法。
我的实际问题是为什么我不能用or 做到这一点。帆提供这种方式吗?
【问题讨论】:
标签: javascript node.js postgresql sails.js waterline