Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Não é possível adicionar autores com o mesmo nome

Olá!

Concluí o projeto e enquanto fazia os testes finais, percebi que eu não consigo adicionar dois autores com o mesmo nome. Isso é um problema geral ou é só comigo? Se for só comigo, alguém poderia me dar uma força para entender melhor o que acontece?

Projeto: https://github.com/renatobmps/casa-do-codigo.git

5 respostas

Oi, Renato, tudo bem?

Na sua class Autores, um detalhe estava nos trazendo esse problema, dentro do método componentDidMount, dentro do if o que precisa ser passado primeiro como instrução é o PopUp e depois o estado this.setState, ficando assim:

 if (res.message === "success") {
          PopUp.exibeMensagem(
            "success",
            "Autores listados corretamente do servidor"
          );
          this.setState({ autores: [...this.state.autores, ...res.data] });
        }

Assim, na hora de adicionar o autor não terá problema sendo nomes iguais.

Espero ter te ajudado!

Nunca ia imaginar que seria isto. Muito obrigado!

Sabe me dizer por que isto ocorre? Pensei que a ordem dos dois não alteraria em nada

solução!

No meu caso, constatei que no arquivo do banco sqLite presente na API, o instrutor definiu na criação da tabela que a coluna nome deveria ser unica.

arquivo database.js presente na api.

const DBSOURCE = "db.sqlite"

let db = new sqlite3.Database(DBSOURCE, (err) => {
    if (err) {
      // Cannot open database
      console.error(err.message)
      throw err
    }else{
        console.log('Connected to the SQLite database.')
        db.run(`CREATE TABLE autor (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            nome text UNIQUE, 
            livro text , 
            preco INTERGER, 
            CONSTRAINT nome_unique UNIQUE (nome)
            )`,
        (err) => {
            if (err) {
                // Table already created
            }else{
                // Table just created, creating some rows
                var insert = 'INSERT INTO autor (nome, livro, preco) VALUES (?,?,?)'
                db.run(insert, ["Paulo Scalercio","React", 1200])
                db.run(insert, ["Marcos","Design",800])
                db.run(insert, ["Daniel","java",150])
                db.run(insert, ["Nico","Aprenda Alemão",9999])
            }
        });  
    }
});


module.exports = db

=> Só não entendi pq ele definiu assim =)

Poxa, realmente Adailton. Obrigado!!!

De nada amigão ..!!! =)