Saudações guerreiros!
Por favor, considerem o objeto "Tapioca" exibido abaixo:
{
"_id" : ObjectId("5bfff1027e1ad83f189ff76c"),
"Preco" : "4.50",
"Recheio" : [
{
"Nome" : "Carne Moída",
"Quantidade" : "200g"
},
{
"Nome" : "Queijo",
"Quantidade" : "1"
},
{
"Nome" : "Presunto",
"Quantidade" : "1"
}
]
}
Suponhamos que a partir de hoje, essa tapioca receberá um incremento. Agora ela será produzida com 2 fatias de queijo! Preciso atualizar somente a quantidade de queijo nessa tapioca.
- Eu começo chamando um PUT na url com o ID da Tapioca, algo como http://localhost:5000/api/tapiocas/5bfff1027e1ad83f189ff76c
- Enviou também um objeto json com a atualização do Recheio, algo como
{
"nome": "Quejo",
"quantidade": "2"
}
- Agora na controller é que me apareceu a dúvida. Como faço pra atualizar somente a quantidade de queijo da minha tapioca?
- Deveria eu, enviar no PUT o objeto Tapioca inteiro e sobrescrever o anterior do banco?
- Qual a melhor alternativa e como fazer?
Segue abaixo o código da minha action, comecei a escrever o código da minha action, mas ainda não descobri como filtrar por tapioca e atualizar apenas a quantidade do queijo x)
[HttpPut("{id}")]
public async Task<IActionResult> Put(string id, [FromBody] Recheio model)
{
if (ModelState.IsValid)
{
var filter = Builders<Tapioca>.Filter.Eq(a => a.Id, ObjectId.Parse(id));
var update = Builders<Recheio>.Update.Set(a => a.Quantidade, model.Quantidade);
await db.Tapiocas.UpdateOneAsync(filter, update);
return Accepted(model);
}
return BadRequest();
}
Obrigado! =D