Atualizado: 21/06/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

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