我正在开发一些自定义API端点(使用loopback.io),在其现有的CRUD端点之上。
过去我曾使用其他一些Node RESTful API框架进行原型设计,并且非常喜欢它们开箱即用的强大过滤功能。
我想要做的是为自定义端点提供类似的某种过滤(或子集)。端点只执行SQL查询(带有一些JOIN)并返回一个对象数组。
我应该使用哪种标准化方法来设计一些过滤?例如,我可能想要过滤基表的字段,或过滤关系。我喜欢loopback.io和sequelize的方式允许相对简单的includes
规范来链接相关对象,以及它们的过滤语法。
自定义实现完成后,通常会如何处理此类问题?
答案 0 :(得分:0)
正如您可能注意到CRUD端点,LoopBack通过querying参数提供了filter开箱即用的功能。你可以在API Explorer中很好地试验它。如果您要公开自定义remote method的查询,只需将过滤器添加为参数。
示例-model.js
module.exports = ExampleModel => {
const search = async (filter = {}) => {
return await ExampleModel.find(filter)
}
ExampleModel.remoteMethod('search', {
description: 'Returns a set of ExampleModel based on provided query.',
accepts: [
{arg: 'filter', type: 'object', required: false}
],
http: {path: '/search', verb: 'get'},
returns: {root: true}
})
ExampleModel.search = search
}