sails.config.blueprints
这些可配置的设置允许您配置 Sails 中的蓝图 API。一些设置(例如 sails.config.blueprints.autoWatch
)控制内置 蓝图操作 的行为,而其他设置(例如 sails.config.blueprints.shortcuts
)则调整隐式 蓝图路由 的行为和/或确定 Sails 是否自动绑定某些类型的蓝图路由。
请记住,蓝图操作可以附加到您的自定义路由,无论您是否启用了任何类型的隐式蓝图路由。
属性 | 类型 | 默认值 | 详情 |
---|---|---|---|
actions |
false |
是否为应用程序中的每个操作自动生成隐式蓝图(“影子”)路由。例如,拥有一个 api/controllers/foo/bar.js 文件或 api/controllers/FooController.js 中的 bar 函数会自动将传入的请求路由到 /foo/bar 以执行该操作,只要它没有被 自定义路由 覆盖即可。启用此设置时,还会将其他特殊隐式(“影子”)路由绑定到任何名为 index 的操作,以及应用程序及其每个控制器的相对“根”URL。例如,api/controllers/foo/index.js 的 /foo 影子路由,或 api/controllers/index.js 的 / 影子路由。 |
|
rest |
true |
是否启用自动 REST 蓝图?例如 'get /:model/:id?' 'post /:model' 'put /:model/:id' 'delete /:model/:id' 。 |
|
shortcuts |
true |
这些 CRUD 快捷方式在开发过程中是为了方便您使用,但您需要在生产环境中禁用它们:'/:model/find/:id?' 、'/:model/create' 、'/:model/update/:id' 和 '/:model/destroy/:id' 。 |
|
prefix |
'' |
所有 蓝图路由(包括 rest 、actions 和 shortcuts )的可选挂载路径前缀(例如 '/api/v2' )。这仅适用于隐式蓝图(“影子”)路由,不适用于您的 自定义路由。 |
|
restPrefix |
'' |
控制器上所有 REST 蓝图路由的可选挂载路径前缀,例如 '/api/v2' 。(不包括 actions 和 shortcuts 路由。)这允许您利用 REST 蓝图路由,即使您需要为 RESTful API 方法命名空间。将与您的 prefix 配置连接,例如 prefix: '/api' 和 restPrefix: '/rest' 。RESTful 操作将在 /api/rest 下可用。 |
|
pluralize |
false | 是否在蓝图路由中使用复数模型名称,例如 User 模型的 /users 。(这仅适用于蓝图自动路由,不适用于来自 sails.config.routes 的手动路由。) |
属性 | 类型 | 默认值 | 详情 |
---|---|---|---|
autoWatch |
true |
是否在 find 和 findOne 蓝图操作中将请求的套接字订阅到通过蓝图 API 关于新创建记录的通知。 |
|
parseBlueprintOptions |
(见下文) | 提供此函数以覆盖蓝图操作的默认行为(包括搜索条件、跳过、限制、排序和填充)。 |
parseBlueprintOptions
每个蓝图操作在其核心都包含一个 Waterline 模型方法调用。例如,find
蓝图在为 User
模型运行时,会运行 User.find()
以检索一些用户记录。传递给这些 Waterline 方法的选项由对 parseBlueprintOptions()
的调用确定。此方法的默认版本(可通过 sails.hooks.blueprints.parseBlueprintOptions()
获得)确定蓝图的默认行为。您可以在您的 蓝图配置(在 config/blueprints.js
中)中覆盖 parseBlueprintOptions
以自定义所有蓝图操作的行为,或在 每个路由的基础上 自定义单个路由的行为。
parseBlueprintOptions()
方法接受一个参数(请求对象),并期望返回一个 Waterline 查询选项的字典。(您可以查看此类字典的非现实扩展示例 此处,但请记住并非所有键都适用于所有蓝图操作。有关完整详细信息,请参阅 Sails 代码中的源代码)。
添加您自己的 parseBlueprintOptions()
是一个高级概念,建议您首先熟悉 默认方法代码 并将其用作起点。对于蓝图行为的小幅修改,最好首先在您的覆盖中调用默认方法,然后对返回的查询选项进行更改。
parseBlueprintOptions: function(req) {
// Get the default query options.
var queryOptions = req._sails.hooks.blueprints.parseBlueprintOptions(req);
// If this is the "find" or "populate" blueprint action, and the normal query options
// indicate that the request is attempting to set an exceedingly high `limit` clause,
// then prevent it (we'll say `limit` must not exceed 100).
if (req.options.blueprintAction === 'find' || req.options.blueprintAction === 'populate') {
if (queryOptions.criteria.limit > 100) {
queryOptions.criteria.limit = 100;
}
}
return queryOptions;
}