5
respostas

Erro ao realizar o GET node:internal/process/promises:246

Alguém poderia me ajuda nesse erro?

node:internal/process/promises:246
          triggerUncaughtException(err, true /* fromPromise */);
          ^

Error
    at Query.run (G:\000000_ALURA\api-petshop\node_modules\sequelize\dist\lib\dialects\mysql\query.js:52:25)
    at G:\000000_ALURA\api-petshop\node_modules\sequelize\dist\lib\sequelize.js:313:28
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async MySQLQueryInterface.select (G:\000000_ALURA\api-petshop\node_modules\sequelize\dist\lib\dialects\abstract\query-interface.js:396:12)
    at async Function.findAll (G:\000000_ALURA\api-petshop\node_modules\sequelize\dist\lib\model.js:1119:21)
    at async G:\000000_ALURA\api-petshop\api\rotas\fornecedores\produtos\index.js:5:22 {
  name: 'SequelizeDatabaseError',
  parent: Error: Unknown column 'fornecedor' in 'field list'
      at Packet.asError (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\packets\packet.js:728:17)
      at Query.execute (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\commands\command.js:29:26)
      at Connection.handlePacket (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\connection.js:456:32)
      at PacketParser.onPacket (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\connection.js:85:12)
      at PacketParser.executeStart (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\packet_parser.js:75:16)
      at Socket.<anonymous> (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\connection.js:92:25)
      at Socket.emit (node:events:390:28)
      at addChunk (node:internal/streams/readable:315:12)
      at readableAddChunk (node:internal/streams/readable:289:9)
      at Socket.Readable.push (node:internal/streams/readable:228:10) {        
    code: 'ER_BAD_FIELD_ERROR',
    errno: 1054,
    sqlState: '42S22',
    sqlMessage: "Unknown column 'fornecedor' in 'field list'",
    sql: "SELECT `id`, `titulo`, `preco`, `estoque`, `fornecedor`, `dataCriacao`, `dataAtualizacao`, `versao` FROM `produtos` AS `produto` WHERE `produto`.`fornecedor` = '5';",
    parameters: undefined
  },
  original: Error: Unknown column 'fornecedor' in 'field list'
      at Packet.asError (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\packets\packet.js:728:17)
      at Query.execute (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\commands\command.js:29:26)
      at Connection.handlePacket (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\connection.js:456:32)
      at PacketParser.onPacket (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\connection.js:85:12)
      at PacketParser.executeStart (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\packet_parser.js:75:16)
      at Socket.<anonymous> (G:\000000_ALURA\api-petshop\node_modules\mysql2\lib\connection.js:92:25)
      at Socket.emit (node:events:390:28)
      at addChunk (node:internal/streams/readable:315:12)
      at readableAddChunk (node:internal/streams/readable:289:9)
      at Socket.Readable.push (node:internal/streams/readable:228:10) {        
    code: 'ER_BAD_FIELD_ERROR',
    errno: 1054,
    sqlState: '42S22',
    sqlMessage: "Unknown column 'fornecedor' in 'field list'",
    sql: "SELECT `id`, `titulo`, `preco`, `estoque`, `fornecedor`, `dataCriacao`, `dataAtualizacao`, `versao` FROM `produtos` AS `produto` WHERE `produto`.`fornecedor` = '5';",
    parameters: undefined
  },
  sql: "SELECT `id`, `titulo`, `preco`, `estoque`, `fornecedor`, `dataCriacao`, `dataAtualizacao`, `versao` FROM `produtos` AS `produto` WHERE `produto`.`fornecedor` = '5';",
  parameters: {}
}
5 respostas

Oi Vinicius, tudo bem? Conseguiu resolver?

A mensagem é de que essa coluna fornecedor não existe, provavelmente na hora de criar a tabela deve estar diferente, sugiro olhar no banco de dados como ela está.

Então, ele tem a coluna fornecedor

const colunas = {
    titulo: {
        type: Sequelize.STRING,
        allowNull: false
    },
    preco: {
        type: Sequelize.DOUBLE,
        allowNull: false
    },
    estoque: {
        type: Sequelize.INTEGER,
        allowNull: false,
        defaultValue: 0
    },
    fornecedor: {
        type: Sequelize.INTEGER,
        allowNull: false,
        references: {
            model: require('../ModeloTabelaFornecedor'),
            key: 'id'
        }
    }
}

Voce ta exportando essas colunas como um modelo ? Depois voce tem que criar elas ainda no banco executando o criarTabelas.js.

Ai sim voce vai poder inserir dados nela

Para referencia peguei o codigo do github do projeto: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeEssas 2 linhas marcadas em amarelo que vao fazer com que seu modelo seja realmente criado.

Ai apos isso, executa o criarTabelas.js que ele vai criar a tabela no banco de dados.

Espero que ter ajudado!

Eu já fiz isso, mas ainda assim não funciona. Eu só botei um pedaço do código para dar o exemplo da coluna do fornecedor.

Me equivoquei na verdade Vinicius, achei que o erro era o modelo como um todo mas na verdade eh uma coluna só.

Faz a seguinte checagem:

Ve na database se a coluna Fornecedor existe, e se ela eh realmente uma foreignKey de Fornecedores. Pra ver se existe ou voce abre pelo mysql workbench ou da os comandos:

mysql -u username -p ( pressiona enter) 
digita a senha ( pressiona enter) 
use DATABASE_DO_PROJETO ( pressiona enter )
describe fornecedores; ( pressiona enter )

DATABASE_DO_PROJETO no caso eh a database que voce ta usando ai no seu projeto, so colocar o nome certo.

caso nao exista, eh so digitar os comandos no cmd:

npx sequelize db:migrate:undo:all

npx sequelize db:migrate

isso vai resetar todo seu banco de dados, inserindo todas as colunas caso alguma nao exista. ( as tabelas vao ser todas esvaziadas )