如何自动解析 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 - 创建不是模型上的功能