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()
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
User
id
Após a operação de inserção, podemos acessar o objeto adicionado, incluindo seu id
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}
[
{ 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
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()
findOne()
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()
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
name="Bob"
Removendo Dados
Para remover dados, utiliza-se o método destroy()
User.destroy({
where: {
name: "Bob"
}
}).then((res) => {
console.log(res);
});
Neste exemplo, serão removidos os objetos cujo name seja "Bob".