【发布时间】:2018-03-04 17:34:28
【问题描述】:
假设我有一个问题模型,其中包含许多要回答的选项,基本上是一个问题对多个选项。 Sails 自动为问题和选择模型公开一个 RESTful 列表视图,但每个端点也会自动列出所有关联关系,如下所示:
致电GET /question:
{
"choices": [
{
"createdAt": 1520183091725,
"updatedAt": 1520183091725,
"id": 1,
"text": "This is an answer",
"votes": 1,
"associatedQuestion": 1
}
],
"createdAt": 1520183061263,
"updatedAt": 1520183061263,
"id": 1,
"text": "This is a question"
}
这一切都很好,直到我的 choice 模型自己获得新关系,因此再次嵌套列表。
有没有办法告诉 Sails 哪些属性不应该在默认 REST 路由中发送?我想我可以在我的QuestionController 上创建一个使用find 的方法,然后它只会返回question 对象的平面列表。但这是一个好习惯吗?
【问题讨论】:
-
是的,根据我的经验,路线只能让你走这么远。对于其他一切,创建自己的控制器是必经之路。
-
那么您是否建议不要在生产中启用蓝图,因为它们不支持分页并且响应可能会变得低效大?
-
是和否,使用风帆,您可以在每个控制器的基础上停用蓝图路线。就像我对某些请求所说的那样,唯一的方法是使用您自己的控制器功能。使用蓝图,您可以分页、使用限制和跳过。
-
我可以强制蓝图在每个控制器的基础上进行限制或分页,以便每个请求默认只返回 x 个结果吗?感谢您的输入
-
您可以在 config/blueprints.js 中使用
defaultLimit : 20为所有蓝图设置限制,也可以在 config/routes.js 中使用"GET /model": {blueprint: populate_limit: 20}为单个路由设置限制
标签: javascript node.js sails.js lazy-loading