1
resposta

Achei um Bug na aplicação

Vamos supor que temos 5 usuarios cadastrados. Se deletarmos o de ID 3 e tentar incluir um novo, o tamanho da lista sera 4 e ira criar o ID 5, porem o 5 ja existe, então retornará erro de duplicate key.

Solução: Pegar os registros do banco e criar o proximo ID apartir do maior ID encontrado e nao do tamanho do array.

pensei em resolver com o sort( ):

const ids = users.map(user => user.id).sort()
 user.id = ids[ids.length - 1] + 1

Mas sabemos quando chegar no ID 10 vai bugar tambem (JS sendo JS).

entao fiz o seguinte:

let maiorId = 0
maiorId = users.forEach((user) => {
  if(user.id > maiorId)
    maiorId = user.id
 } )
user.id = maiorId + 1
1 resposta

Oi Leonardo, tudo bem? Eu não vi a aula mas consegui entender o que você quis dizer, realmente, lidar com registros em arrays pode gerar esse tipo de problema, uma solução é não depender do indice do array para gerar o id. Uma forma pode ser uma variável contadora externa que vai sempre somando.

O problema de percorrer a lista, é que você pode cair em um problema de performace em listas muito grandes. Uma outra solução que me parece mais simples de escrever, mas que gera ids não lineares é você gerar o último id a patir da soma dos dois últimos da lista tipo assim:

const id = lista[lista.length - 1].id +lista[lista.length - 2].id

Nesse caso tem uma pegadinha, o primeiro id não vai ter com quem somar, muito menos o segundo id, mas depois disso, o problema na teoria está resolvido.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software