我有一个 bear 模型,我在蓝图REST 中使用它。
// api/models/Bear.js
module.exports = {
attributes: {
name: {
type: 'string',
required: true
}
}
};
我想基于与标准findWhere
完全相同的标准对熊进行一些计算。确实,我希望能够提出要求
GET /bear/details
就像我要求的那样
GET /bear
所以我可以找到熊的详细信息:
?where={}
?name=
{name: ''}
?limit=
等。控制器如下所示:
// api/controllers/BearController.js
module.exports = {
getDetails: function (req, res) {
Bear.find().exec(function (err, bears){
if (err) return res.serverError(err);
var bearsDetails = _.map(bears, function(bear) {
return {
id: bear.id,
nameLength: bear.name.length,
reversedName: bear.split('').reverse().join('')
};
});
return res.json(bearsDetails);
});
}
};
我有一个看起来像这样的自定义路线
// config/routes.js
module.exports.routes = {
'get /bear/details': 'BearController.getDetails'
}
=> 如何在自定义控制器中自动过滤与findWhere
请求完全相同的模型,而无需重新发明轮子?
答案 0 :(得分:0)
显然我自己想到了sails' find()
source code。可以使用actionUtil' module.exports = require('../../node_modules/sails/lib/hooks/blueprints/actionUtil');
。为了清洁目的,我个人将其包装成服务。
粗略地说:
<强> API /服务/ ActionUtilService.js 强>
module.exports = {
getDetails: function (req, res) {
let criteria = ActionUtilService.parseCriteria(req);
Bear.find(criteria).exec(function (err, bears){
if (err) return res.serverError(err);
var bearsDetails = _.map(bears, function(bear) {
return {
id: bear.id,
nameLength: bear.name.length,
reversedName: bear.split('').reverse().join('')
};
});
return res.json(bearsDetails);
});
}
};
<强> API /控制器/ BearController.js 强>
{{1}}
为了清洁,我把它包裹进了