Services
services 是每個(gè)Feathers 應(yīng)用的核心婉宰。他們執(zhí)行應(yīng)用級(jí)別的I/O操作筐摘,實(shí)現(xiàn)數(shù)據(jù)進(jìn)出。
一個(gè)service是個(gè)簡(jiǎn)單的JS對(duì)象瞻佛,提供了下列方法:
find
get
create
update
patch
remove
setup
services可以被當(dāng)做Express middleware使用:
app.use('/path', serviceObject)
Services通常有三個(gè)使用方面:
1.方便數(shù)據(jù)存儲(chǔ)(Data Storage)
這是最常見(jiàn)的方面琉苇。它支持的很多數(shù)據(jù)存儲(chǔ)選項(xiàng)嘲玫,通過(guò)數(shù)據(jù)庫(kù)適配器支持相似的查詢語(yǔ)法。
2.外部API通信(External APIs)
services用來(lái)和其他外部API提供者通信并扇。
Feathers-twilio
Feathers-stripe
Feathers-mailgun
3.實(shí)時(shí)地代理舊式的服務(wù)
通過(guò)services可以逐步升級(jí)舊式的應(yīng)用來(lái)與現(xiàn)代式API通信去团。通暢分三步實(shí)現(xiàn):
a.把services方法映射到已存在的舊式端點(diǎn)。這可能包含多個(gè)services穷蛹。
b.設(shè)置每個(gè)services方法土陪,向舊式API發(fā)送請(qǐng)求。對(duì)于用戶來(lái)說(shuō)肴熏,實(shí)現(xiàn)了請(qǐng)求代理鬼雀。
c.更新客戶端應(yīng)用,來(lái)使用Feathers 服務(wù)的端點(diǎn)蛙吏。
獲取服務(wù)
可以如下獲取服務(wù)對(duì)象:
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));
服務(wù)方法
下面是完整的Feathers服務(wù)接口:
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 方法應(yīng)該返回Promise鞋吉,并帶有如下參數(shù):
id:resource的唯一標(biāo)識(shí)。
data:resource數(shù)據(jù)励烦。
params:其他參數(shù)谓着。
callback:可選回調(diào)。
剩下的是 setup 方法崩侠。
這個(gè)特殊的方法用來(lái)初始化services。注冊(cè)服務(wù)時(shí)坷檩,這個(gè)方法會(huì)自動(dòng)被調(diào)用却音,來(lái)實(shí)現(xiàn)一些特殊的初始化。
Events
任何注冊(cè)過(guò)的服務(wù)矢炼,會(huì)自動(dòng)被轉(zhuǎn)化成事件發(fā)射器系瓢。一旦resource改變,相應(yīng)的接口方法成功調(diào)用句灌。
保護(hù)服務(wù)方法
不想暴露一些服務(wù)的方法夷陋,可以使用bundled hook。
擴(kuò)展或自定義服務(wù)