如何自动解析 Sails.js 路由上的模型属性?

Posted

技术标签:

【中文标题】如何自动解析 Sails.js 路由上的模型属性?【英文标题】:How to automatically resolve model attributes on Sails.js routes? 【发布时间】:2016-11-25 17:29:02 【问题描述】:

使用Sails.js Generate 创建 API 非常简单。获取this tutorial example,运行

curl -X GET http://localhost:1337/employee/1

返回


    "id": 1,
    "name": "John Smith",
    "email" "john@email.com",
    "empnum" "123",
    "createdAt" "2015-10-25T19:25:16.559Z",
    "updatedAt" "2015-10-25T19:25:16.559Z",

curl -X GET http://localhost:1337/employee/1?fields=name

会回来


    "name": "John Smith"

我如何配置 Sails.js 来解析子资源路径,而不是传递字段数组:

curl -X GET http://localhost:1337/employee/1/name

【问题讨论】:

【参考方案1】:

您需要添加自定义路由和控制器功能,例如:

config/routes.js:

"GET /employee/:id/:field": "EmployeeController.findOneFiltered"

api/controllers/EmployeeController.js

findOneFiltered: function(req, res) 
    var id = req.param("id");
    var field = req.param("field");

    // Fetch from database by id
    Employee.findOne(id)
    .then(function(employee) 
        // Error: employee with specified id not found
        if (!employee) 
            return res.notFound();
        

        // Error: specified field is invalid
        if (typeof employee[field] === "undefined") 
            return res.badRequest();
        

        // Success: return attribute name and value
        var result = ;
        result[field] = employee[field];
        return res.json(result);
    )
    // Some error occurred
    .catch(function(err) 
        return res.serverError(
            error: err
        );
    );

【讨论】:

以上是关于如何自动解析 Sails.js 路由上的模型属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在sails.js 模型中添加具有整数数据类型数组的属性?

Sails.js / Waterline - 创建不是模型上的功能

从 Sails.js 中的关联模型访问模型的属性

如何在 Sails.js 中为自定义路由启用 CORS

如何在前端使用 SPA 设置 Sails.js 路由以支持 pushstate

Sails js:如何在 Sails js 的单个模型中定义两个 MySQL 连接到两个不同的数据库?