调用自定义API方法的功能
Feathers calling custom API method
我用以下内容定义我的api:
class MyFeathersApi {
feathersClient: any;
accountsAPI: any;
productsAPI: any;
constructor(app) {
var port: number = app.get('port');
this.accountsAPI = app.service('/api/accounts');
this.productsAPI = app.service('/api/products');
}
findAdminAccounts(filter: any, cb: (err:Error, accounts:Models.IAccount[]) => void) {
filter = { query: { adminProfile: { $exists: true } } }
this.accountsAPI.find(filter, cb);
}
当我想使用数据库适配器方法时,从客户端,即查找和/或创建,我会执行以下操作:
var accountsAPIService = app.service('/api/accounts');
accountsAPIService.find( function(error, accounts) {
...
});
如何从客户端调用自定义方法,如findAdminAccounts()?
您只能在客户端上使用正常的服务接口。我们发现,对自定义方法的支持(以及它带来的从明确定义的接口到任意方法名称和参数的所有问题)并不是真正必要的,因为一切本身都可以描述为资源(服务)。
到目前为止,其好处(如安全性、可预测性和发送定义良好的实时事件)远远超过了在概念化应用程序逻辑时所需的思想上的微小变化。
在您的示例中,您可以制作一个包装器服务,以获得如下管理帐户:
class AdminAccounts {
find(params) {
const accountService = this.app.service('/api/accounts');
return accountService.find({ query: { adminProfile: { $exists: true } } });
}
setup(app) {
this.app = app;
}
}
app.use('/api/adminAccounts', new AdminAccounts());
或者,您可以实现一个钩子,将查询参数映射到更大的查询,如下所示:
app.service('/api/accounts').hooks({
before: {
find(hook) {
if(hook.params.query.admin) {
hook.params.query.adminProfile = { $exists: true };
}
}
}
});
这将允许调用类似/api/accounts?admin
的内容。
有关更多信息,请参阅本常见问题解答。
相关文章:
- 有没有一种方法可以修改在使用javascript的媒体功能的媒体查询下创建的样式
- 使用多功能框在 chrome 扩展程序中包含内联自动填充功能的任何方法
- 基本阵列构造的功能方法
- AngularJS控制器之间共享代码/方法/功能
- 制作预制响应功能的最佳方法是什么
- 在触摸屏上实现<缩写>型功能的最干净方法
- 自动排序方法以附加功能
- 识别浏览器 HTML5 功能的推荐方法
- 将javascript方法功能分组到javascript“类”中
- 使用无状态功能组件与调用方法有什么区别
- JS扩展方法的功能
- javascript:在页面加载后执行该功能的最佳方法
- 通过SWT浏览器/ SWT浏览器功能从GWT应用程序调用Java方法
- 处理所需和可选功能参数的推荐方法
- 调用自定义API方法的功能
- 有没有更有效的方法来处理重复的功能
- 这是对象方法的内在功能
- 编辑JSON对象-寻找更好的功能方法
- 将对象简化为字符串的功能方法
- 从对象数组上的属性创建数组的功能方法