Aggiornamento collettivo nell'applicazione client-server

2

A volte quando si codifica un'applicazione client-server, il client deve effettuare un aggiornamento collettivo. Ad esempio: "segna tutti gli ordini in sospeso come inviati". Per implementarli, in genere scrivo specifici metodi di controller, che eseguono l'operazione di database richiesta.

Mi è venuto in mente che teoricamente questo potrebbe essere fatto senza specifici metodi di controllo. Con un approccio semplice, il client può scorrere gli ordini in sospeso (a cui può già accedere) e contrassegnarli come inviati (di nuovo, ha già una chiamata per farlo). Il problema con questo approccio è che provoca molti round trip di rete, aumentando la latenza.

Ma questo mi ha fatto meravigliare, esiste una specie di linguaggio generico di query / aggiornamento client-server? Esiterei per consentire SQL dal client al server, a meno che non sia possibile creare alcuni controlli molto stretti per evitare l'iniezione SQL. Ma in linea di principio voglio che il client comunichi al server "UPDATE orders SET status = 'spedito' WHERE status = 'in sospeso'" - e il server ad agire in questo modo, mentre applica tutti i controlli di sicurezza applicabili all'utente corrente.

Ho pensato che probabilmente questa soluzione ha già una soluzione, ma non conosco il suo nome, quindi questa domanda. Qualsiasi aiuto apprezzato.

Modifica: sulla riflessione, forse questa è una cattiva idea. Quando codifico esplicitamente un controller, posso garantire che il database abbia indici appropriati per rendere efficiente l'aggiornamento. Se la query esiste solo sul front-end, assicurarsi che gli indici appropriati siano disponibili crea una scomoda dipendenza front / back.

    
posta paj28 20.11.2014 - 17:08
fonte

2 risposte

1

flask-irrequiete supporta questo comportamento con la sua funzionalità di patch multiple .

PUT /api/person

Sets specified attributes on every instance of Person which meets the search criteria described in the q parameter.

Ancora non conosco il nome per questa tecnica generale, ma questo fa quello che mi serve.

    
risposta data 21.11.2014 - 10:54
fonte
-1

Guarda il comando SQL COPY. Può prendere i dati come input e inserirli in una tabella. Quindi, l'iniezione SQL non sarebbe un problema. Dovresti semplicemente richiedere un formato dati per il file o creare un'interfaccia per l'utente per specificarlo.

    
risposta data 20.11.2014 - 17:53
fonte

Leggi altre domande sui tag