当控制器为空时,Sails JS 生成的实体如何创建?

Sails JS how does generated entity have create when controller is empty ?

我有一个基本问题。

我正在试用 Sails (http://sailsjs.org/),它有生成实体的终端命令,例如 User 实体:

sails generate api user

我的问题是,UserController.js 文件显示:

/**
 * UserController
 *
 * @description :: Server-side logic for managing users
 * @help        :: See http://sailsjs.org/#!/documentation/concepts/Controllers
 */

module.exports = {

};

我访问时怎么会:

http://localhost:1337/user/create

它知道如何创建新的用户实体吗?控制器显然没有这样的创建操作:

module.exports = {
    create: function(req, res) {
        // code to create new user
    }
};

所以肯定不会发生任何事情。

我做了一些 Symphony 2.0 PHP 网络框架,我们需要手动创建这些操作。

我既困惑又印象深刻,有什么想法吗?

欢迎来到 Sails.js 世界!

您刚刚发现了蓝图API

当您提升您的应用程序时,Sails 会向您的具有相同名称模型的控制器添加通用操作(直到今天 findfindOnecreateupdatedestroypopulateaddremove 操作隐式存在)。这就是所谓的 蓝图操作

此外,Blueprints routes 也可以绑定到控制器的操作。以下是这些路线的列表:

  • Blueprints RESTful 路由:自动生成路由以在 findcreate 之上公开常规 REST API 、updatedestroy 操作
    • GET /post -> PostController.find
    • GET /post/:id -> PostController.findOne
    • POST /post -> PostController.create
    • PUT /post/:id -> PostController.update
    • 删除/post/:id -> PostController.destroy
  • 蓝图快捷方式路由:提供从浏览器URL栏访问控制器CRUD方法的简单助手
    • GET /user/create?name=joe -> Post.create
    • GET /user/update/1?name=mike -> Post.update
    • 获取 /user/destroy/1 -> Post.destroy
  • Blueprints actions routes:自动为您的自定义控制器操作创建路由
    • 获取 /group/count -> Post.count

它们中的每一个都可以在 config/blueprints.js 文件中停用。

您可以在 docs 上找到更多详细信息。

如果要重新定义蓝图操作,请选中 this SO question