Atualizado: 02/01/2025

Consultando o Banco de Dados com Sequelize no Node.js

Vamos aprender a realizar operações básicas com dados usando o exemplo de modelo do último tema:

const Sequelize = require("sequelize");
const sequelize = new Sequelize({
    dialect: "sqlite",
    storage: "programicio.db",
    define: {
        timestamps: false
    }
});

const User = sequelize.define("user", {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    primaryKey: true,
    allowNull: false
  },
  name: {
    type: Sequelize.STRING,
    allowNull: false
  },
  age: {
    type: Sequelize.INTEGER,
    allowNull: false
  }
});

Adicionando Dados

Para adicionar dados ao banco, utiliza-se o método create() do modelo, ao qual se passa o objeto a ser inserido:

User.create({
  name: "Tom",
  age: 35
}).then(res => {
  console.log(res);
}).catch(err => console.log(err));

Como podemos observar, as propriedades do objeto passado ao método create correspondem às propriedades do modelo User, com exceção do atributo id, que é gerado pelo banco de dados.

Após a operação de inserção, podemos acessar o objeto adicionado, incluindo seu id gerado pelo banco de dados:

User.create({
  name: "Bob",
  age: 31
}).then(res => {
  const user = {id: res.id, name: res.name, age: res.age};
  console.log(user);
}).catch(err => console.log(err));

Obtendo Dados

Para obter todos os dados, utiliza-se o método findAll():

User.findAll({raw: true}).then(users => {
  console.log(users);
}).catch(err => console.log(err));

Neste exemplo, o método recebe um objeto opcional {raw: true}, que permite obter diretamente os dados do banco no formato de objetos sem metadados adicionais. Por exemplo, a saída no console pode ser a seguinte:

[ 
  { id: 1, name: 'Tom', age: 35 },
  { id: 2, name: 'Bob', age: 31 } 
]

Filtro Simples

Para aplicar filtros em consultas (assim como em operações de atualização e remoção), usa-se o operador where, que especifica o critério de filtro. Por exemplo, vamos selecionar todos os usuários do banco cujo nome seja "Tom":

User.findAll({where: {name: "Tom"}, raw: true})
.then(users => {
  console.log(users);
}).catch(err => console.log(err));

A saída no console será:

[ { id: 1, name: 'Tom', age: 35 }]

Obtendo um Único Objeto

Frequentemente, precisamos obter apenas um objeto do banco de dados. Nesse caso, podemos usar métodos como findByPk() (obtém o objeto pela chave primária) e findOne() (obtém um objeto que corresponde a um critério específico). Por exemplo, vamos buscar o usuário com id=2:

User.findByPk(2)
.then(user => {
    if(!user) return; // se o usuário não for encontrado
    console.log(user.name);
}).catch(err => console.log(err));

Ou podemos buscar um usuário com o nome "Tom":

User.findOne({where: {name: "Tom"}})
.then(user => {
    if(!user) return;
    console.log(user.name, user.age);
}).catch(err => console.log(err));

Atualizando Dados

Para atualizar dados, utiliza-se o método update(), ao qual se passa um objeto com os novos valores e um objeto critério para seleção dos objetos a serem atualizados:

User.update({ age: 36 }, {
  where: {
    name: "Bob"
  }
}).then((res) => {
  console.log(res);
});

Neste caso, o primeiro objeto indica que todos os objetos selecionados terão o campo age atualizado para o valor 36. O segundo objeto especifica o critério de seleção: somente os objetos com name="Bob" serão atualizados.

Removendo Dados

Para remover dados, utiliza-se o método destroy(), ao qual se passa um objeto critério para seleção dos objetos a serem deletados:

User.destroy({
  where: {
    name: "Bob"
  }
}).then((res) => {
  console.log(res);
});

Neste exemplo, serão removidos os objetos cujo name seja "Bob".

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com