Services
services 是每个Feathers 应用的核心。他们执行应用级别的I/O操作,实现数据进出。
一个service是个简单的JS对象,提供了下列方法:
find
get
create
update
patch
remove
setup
services可以被当做Express middleware使用:
app.use('/path', serviceObject)
Services通常有三个使用方面:
1.方便数据存储(Data Storage)
这是最常见的方面。它支持的很多数据存储选项,通过数据库适配器支持相似的查询语法。
2.外部API通信(External APIs)
services用来和其他外部API提供者通信。
Feathers-twilio
Feathers-stripe
Feathers-mailgun
3.实时地代理旧式的服务
通过services可以逐步升级旧式的应用来与现代式API通信。通畅分三步实现:
a.把services方法映射到已存在的旧式端点。这可能包含多个services。
b.设置每个services方法,向旧式API发送请求。对于用户来说,实现了请求代理。
c.更新客户端应用,来使用Feathers 服务的端点。
获取服务
可以如下获取服务对象:
const messages = app.service('messages');
// also works with leading/trailing slashes
const messages = app.service('/messages/');
// Now we can use it on the server
messages.get(1).then(message => console.log(message.text));
服务方法
下面是完整的Feathers服务接口:
const myService = {
find(params [, callback]) {},
get(id, params [, callback]) {},
create(data, params [, callback]) {},
update(id, data, params [, callback]) {},
patch(id, data, params [, callback]) {},
remove(id, params [, callback]) {},
setup(app, path) {}
}
app.use('/my-service', myService);
或者,作为ES6 class:
'use strict';
class MyService {
find(params [, callback]) {}
get(id, params [, callback]) {}
create(data, params [, callback]) {}
update(id, data, params [, callback]) {}
patch(id, data, params [, callback]) {}
remove(id, params [, callback]) {}
setup(app, path) {}
}
app.use('/my-service', new MyService());
service 方法应该返回Promise,并带有如下参数:
id:resource的唯一标识。
data:resource数据。
params:其他参数。
callback:可选回调。
剩下的是 setup 方法。
这个特殊的方法用来初始化services。注册服务时,这个方法会自动被调用,来实现一些特殊的初始化。
Events
任何注册过的服务,会自动被转化成事件发射器。一旦resource改变,相应的接口方法成功调用。
保护服务方法
不想暴露一些服务的方法,可以使用bundled hook。
扩展或自定义服务