Sails.js如何修改路由以解释逗号分隔的id列表

时间:2014-11-21 22:37:13

标签: javascript node.js sails.js url-routing policies

根据一些JSON API规范,例如http://jsonapi.org/format/#urls-individual-resources,服务器应解释对/ myResources / 1,2,3,4,5的GET请求。

现在,Sails.js路由器将此信息发送给findOne操作。

正确处理此问题的最佳方法是什么?

我认为理想情况下路由器应该像解释/1,2,3,4,5那样解释?ids[1,2,3,4,5],但我意识到这可能并不简单。

另一个选项是向所有findOne请求添加一个策略,以检查req.params('id')是否有逗号,然后将id列表重新格式化为查询字符串,然后重定向到find(将这项工作?)。将策略添加到每个控制器都很烦人。

思想?

1 个答案:

答案 0 :(得分:0)

我认为这是你的建议,但这只是把它放在findone.js蓝图的顶部。 (或将此作为政策添加)。只需检查以确保它是一个字符串(包括你已经传递的数组。

if(typeof req.params.id === "string"){
    req.params.id = req.params.id.split(',')
}

修改

对于任何实施者,请注意,您的findOne政策将应用于此请求(请参阅评论)。例如,假设您有find的策略,该策略将一些参数应用于req.options.where以根据用户的权限过滤记录。在这种情况下,这不适用!

修改 除非您只是将您的路线指向索引/查找路线。您可以将蓝图路线用于其他所有内容,但在"键"中使用逗号。网址的一部分。