inclusao_ou_alteracao - VWJavascript/Alurapic GitHub Wiki
Ainda não acabamos. FotoService só está preparado para incluir fotos e não alterá-las.
Vamos alterar o método cadastra de FotoService realizando uma verificação. Caso a foto recebida como parâmetro não tenha um ID, uma inclusão será realizada, mas caso ela já tenha essa informação, será realizada uma alteração:
// alurapic/client/app/foto/foto.service.ts
// código anterior omitido
@Injectable()
export class FotoService {
// código anterior omitido
cadastra(foto: FotoComponent): Observable<Response> {
if (foto._id) {
return this.http.put(this.url + '/' + foto._id, JSON.stringify(foto),
{ headers: this.headers });
} else {
return this.http.post(this.url, JSON.stringify(foto),
{ headers: this.headers });
}
}
// código posterior omitido
Quando usamos http.put, passamos como parâmetro a URL v1/foto/ concatenada com o ID da foto que o método cadastra recebeu. O segundo parâmetro é um JSON com os dados que queremos atualizar no servidor.
Pronto! Todas as alterações que fizemos devem ser aplicadas em nosso servidor. Quando voltamos para ListagemComponent vemos a foto com seus dados alterados.