Sono il core concept di FeathersJs. Per generarne uno usare:

npx feathers generate service

I service creano un sistema CRUD dal nome che si passa ed espone i classici metodi di querying, creazione modifica e eliminazione

Secondo la logica di scalabilità, non si modificano i metodi find, get ecc, ma si definiscono gli Schema (che vendono poi usati anche per la validazione) i valori del DB (scrivere a parti le migrazioni) e si agisce sugli hook esposti

Personalizzare i metodi

agire sul file <service>.class.ts e estendere correttamente i metodi (vedere doc)

Aggiungere nuovo metodo

si possono aggiungere nuovi metodi specificando il nome del metodo su <service>.shared.ts e si implementa su <service>.class.ts (doc)

type PlayData = {
	id: number
}
// ...
export class ... {
	async play(data: PlayData, params?: ServiceParams) {
		// ....
	}
}

Per richiamarlo lato client fare una chiamata POST specificando l’header X-Service-Method: 'nome-metodo'

return feathersClient.service('palimpsests').create({id}, {headers: {
'X-Service-Method': 'play'
}}).then...