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。
擴展或自定義服務