Trabalhando com Mongoose - Node.js
Mongoose é uma biblioteca ODM (Object Data Modelling) especializada para trabalhar com MongoDB, que permite mapear objetos de classes para documentos de coleções no banco de dados. Grosso modo, Mongoose funciona de maneira semelhante às ferramentas ORM (Object Relational Mapping). O site oficial da biblioteca, onde você pode encontrar toda a documentação necessária, é mongoosejs.com.
Para trabalhar com Mongoose, continuaremos o projeto das sessões anteriores e, primeiramente, instalaremos a biblioteca usando o comando:
npm install mongoose --save
Em seguida, definiremos o seguinte código no arquivo app.js da aplicação:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// Definindo o esquema
const userSchema = new Schema({
name: String,
age: Number
});
// Definindo o modelo User
const User = mongoose.model("User", userSchema);
// Criando um objeto do modelo User
const user = new User({ name: "Bill", age: 41 });
async function main() {
// Conectando ao banco de dados
await mongoose.connect("mongodb://127.0.0.1:27017/usersdb");
// Salvando o modelo user no banco de dados
await user.save();
console.log("Objeto salvo:", user);
// Desconectando do banco de dados
await mongoose.disconnect();
}
// Iniciando a conexão e a interação com o banco de dados
main().catch(console.log);
Primeiramente, precisamos conectar o mongoose:
const mongoose = require("mongoose");
Os dados utilizados no Mongoose são descritos por um esquema específico. Por exemplo, nas sessões anteriores, salvamos no banco de dados objetos com duas propriedades: name
age
const Schema = mongoose.Schema;
// Definindo o esquema
const userSchema = new Schema({
name: String,
age: Number
});
O esquema contém metadados dos objetos. Aqui, definimos quais propriedades o objeto terá e qual será o tipo de dados de cada propriedade. Ou seja, este é o esquema que descreve o objeto usuário.
Em seguida, usando este esquema, criamos o modelo do usuário:
const User = mongoose.model("User", userSchema);
O primeiro parâmetro do método mongoose.model
User
users
users
O segundo parâmetro da função mongoose.model
Agora podemos criar objetos desse modelo:
const user = new User({
name: "Bill",
age: 41
});
A lógica principal está concentrada na função assíncrona main
mongoose.connect()
await mongoose.connect("mongodb://127.0.0.1:27017/usersdb");
Esse método retorna um objeto Promise
await
Em seguida, chamamos o método save
await user.save();
console.log("Objeto salvo:", user);
Usamos o método mongoose.disconnect();
Como o método save retorna uma Promise
user.save()
.then(() => {
console.log("Objeto salvo:", user);
return mongoose.disconnect();
})
.catch(err => {
console.log(err);
mongoose.disconnect();
});
Vamos executar a aplicação e adicionar o objeto:
Objeto salvo { name: 'Bill', age: 41, _id: new ObjectId("6377c17b71c0bd75cec4d488"), __v: 0 }