comment utiliser PUT correctement en ne modifiant que un attribut avec mongo
Bonjour,
avec spring boot je tente de modifier une valeur avec mongodb, voici l'insertion manuel de ma donnée:
Code:
1 2 3 4 5 6 7 8 9 10
|
CommandLineRunner start(PageHtmlRepository pageHtmlRepository) {
return args -> {
//remplissage de page html
pageHtmlRepository.deleteAll();
Stream.of("contenuHtml").forEach(c -> {
System.out.println("ajotuer actualité ...");
pageHtmlRepository.save(new PageHtml(null,"je suis aquarell 22","aquarel"));
}); |
ma configuration est très simple dans appplication.proprieties:
Code:
1 2 3
|
spring.data.mongodb.uri=mongodb://localhost:27017/publication
server.port=8787 |
voici le résultat de ma donnée dans mogo admin:
Code:
1 2
|
{"_id":"5d984c04eb810c7cba70d2a9","contentHtml":"je suis aquarell 22","routePublication":"aquarel","_class":"publication.entite.PageHtml"} |
j'ai ma donnée insérer correctement, et je souhaite faire un put pour modifier le "contentHtml"(côté front-end avec angular).
Code:
1 2 3 4 5 6 7 8 9
|
let updatePublication = document.getElementById('pageHTML');
return this.http.put(
this.hostWbsPagehtml + localStorage.getItem("paramUrl"), { "contentHtml": updatePublication.innerHTML }, {
headers: new HttpHeaders(
{ 'Authorization': localStorage.getItem('token') }
)
}
); |
voici le résultat dans mongo:
Code:
1 2
|
{"_id":"5d984c04eb810c7cba70d2a9","contentHtml":"contenu modifier","_class":"publication.entite.PageHtml"} |
j'ai perdu "routePublication" après modification , par contre mon _id de mongo est le même.
comment je dois faire correctement la modification dans mongo db, suis-je obligé de récupérer l'ancienne donnée ,et de modifier cette donnée avec le nouveau contenu
afin qu'il ne puisse pas être supprimé ?
ou il faut obligatoirement passer par mon dao , créer une méthode qui ne modifie que l'attribut concerné ?
voici mon dao :
Code:
1 2 3 4 5 6 7 8
|
@RepositoryRestResource
public interface PageHtmlRepository extends MongoRepository<PageHtml,String>{
// public List<Sommaire> findByroute(@Param("rt") String nameSommaire);
@RestResource(path="/byRoute")
public List<PageHtml> findByroutePublication(@Param("rt") String routePublication);
String countByRoutePublication(String string);
} |
merci de vos réponses :)