Usato per fare tutta una serie di automazioni come validazione ecc.
Quando si genera un Service, viene generato un file <nomeServ>.schema.ts con:
La <nome>Schema elenca tutti i campi del modello, sia quelli reali salvati a DB sia quelli relazionali
avatar: Type.Optional(Type.String()),
createdAt: Type.Number(),
userId: Type.Number(),
user: Type.Ref(userSchema)I dati che andranno a DB vanno specificati nell’array <nome>QueryProperties
il <nome>Resolver contiene i valori computed per questo modello. Si possono effettuare calcoli e/o associare le relazioni dal DB (con la funzione virtual)
Il <nome>DataResolver contiene logiche per eseguire operazioni prima che un dato venga salvato in DB
Il <nome>QuerySchema definisce i metodi che pi posso utilizzare nelle query; di default feathers non gestisce operatori tipo $like, che dipendono dall’adapter utilizzato (SQL, mongo, ecc). Le Api query for search DB chiariscono
Il <nome>QueryResolver modifica la query per questo modello (solitamente si usa per impostare valori di default e/o limitare le query)
SQL $like
nel file srv.schema.ts alla variabile <Srv>QuerySchema alla funzionequerySyntax passare come secondo argomento la property su cui abilitare l’operatore:
const messageQuerySchema = Type.Intersect(
[
// This will additionally allow querying for `{ name: { $ilike: 'Dav%' } }`
querySyntax(messageQueryProperties, {
name: {
$ilike: Type.String()
}
}),
// Add additional query properties here
Type.Object({})
],
{ additionalProperties: false }
)Batch edits (multi patch, delete, ecc)
di default FeathersJs disabilita la modifica di batch. Per attivarla su un servizio, nel file services/service-name.class.ts alla costante getOptions aggiungere il valore multi che deve essere costituito da un array di string con i metodi che acettano le modifiche in batch. Es:
export const getOptions = (app: Application): KnexAdapterOptions => {
return {
paginate: app.get('paginate'),
Model: app.get('mysqlClient'),
name: 'music-collections',
multi: ['delete'] // <---- add this line
}
}