Integre seu aplicativo Node.js com um banco de dados MongoDB usando o Mongoose.
Gerenciar dados em um banco de dados MongoDB pode ser desafiador, especialmente ao lidar com modelos de dados complexos. O MongoDB é um banco de dados sem esquema, o que significa que os dados podem ser adicionados sem seguir uma estrutura específica. Essa flexibilidade torna o MongoDB ideal para armazenar grandes quantidades de dados, mas também dificulta o gerenciamento de dados.
O Mongoose fornece uma solução baseada em esquema que ajuda a garantir que os dados salvos no MongoDB sejam consistentes e formatados corretamente. Com o Mongoose, você pode definir um esquema para seus modelos de dados, que especifica a estrutura dos dados e as regras de como esses dados devem ser formatados. Aqui você explorará como usar o Mongoose em um aplicativo Express.
Configurando seu ambiente de desenvolvimento
Antes de usar o Mongoose, você deve instalá-lo como uma dependência em seu projeto.
Você pode instalar o Mongoose executando o comando abaixo:
npm instalar mangusto
Depois de instalar o Mongoose em seu projeto, você precisa conectar seu aplicativo ao MongoDB usando o Mongoose.
O Mongoose se conecta a um banco de dados MongoDB usando o conectar método, que usa um URI do MongoDB como argumento.
Aqui está um exemplo:
// index.js
const mangusto = exigir("mangusto")mangusto.conectar("mongodb://127.0.0.1:27017/exemplo", () =>
console.registro("Conectado ao banco de dados com sucesso")
);
O bloco de código acima se conecta a uma instância local do MongoDB e registra uma mensagem de sucesso quando seu aplicativo se conecta com sucesso ao MongoDB.
Criando um modelo de mangusto
Um modelo Mongoose é uma classe baseada em esquema no Mongoose que permite que você interaja com uma coleção do MongoDB.
Um esquema Mongoose define a estrutura dos documentos que você pode armazenar em uma coleção MongoDB e fornece uma interface para criar, ler, atualizar e excluir documentos nesse coleção.
Ao definir um modelo Mongoose, você define o esquema para os documentos nessa coleção, incluindo as propriedades, seus tipos e quaisquer validações.
Aqui está um exemplo de um modelo Mongoose para um Do utilizador coleção:
const mangusto = exigir("mangusto");
const userSchema = mangusto. Esquema({
nome: {
tipo: Corda,
obrigatório: [verdadeiro, "Nome é obrigatório"],
},
e-mail: {
tipo: Corda,
obrigatório: verdadeiro,
},
idade: {
tipo: Número,
validar: {
validador: função (valor) {
retornar valor > 0;
},
mensagem: () =>"Insira uma idade válida",
},
},
});const Usuário = mangusto.model("Do utilizador", userSchema);
módulo.exports = Usuário;
O bloco de código acima define um esquema Mongoose com três propriedades: nome, e-mail, e idade. Cada propriedade tem um conjunto definido de regras que você deve seguir ao mapear um valor para seu campo especificado. Aqui está um detalhamento das regras:
- nome: O nome propriedade é um corda tipo marcado como obrigatório, o que significa que você deve mapear uma string para este campo. Se você deixar o campo vazio ou inserir outro Tipo de dados JavaScript, o Mongoose gera um erro.
- e-mail: O e-mail propriedade é um corda tipo marcado como obrigatório. Não possui outras regras de validação, mas na prática, você deve validar se o e-mail está correto. Você pode validar o e-mail usando expressões regex ou bibliotecas de terceiros, como class-validator.
- idade: O idade propriedade é um número tipo com uma regra de validação personalizada que verifica se o valor mapeado para o campo é maior que zero. Se o valor não passar na validação, o Mongoose lançará um erro com a mensagem Insira uma idade válida. Você pode deixar este campo vazio, pois não está marcado como obrigatório.
Depois de definir o esquema, o bloco de código cria um modelo Mongoose chamado Do utilizador usando mangusto.model() método. Este método recebe dois argumentos: o nome do modelo e o esquema a ser usado para os documentos.
finalmente, o Do utilizador modelo é exportado para outras partes do seu aplicativo.
Interagindo com o MongoDB usando o Mongoose
Com seu aplicativo conectado a um banco de dados MongoDB e seu modelo criado e acessível a outras partes de seu aplicativo, você pode interagir com seu banco de dados usando métodos fornecidos pelo Mongoose.
Para este tutorial, você executará Operações CRUD em um banco de dados MongoDB.
Observação: Certifique-se de importar seu modelo Mongoose para qualquer módulo onde você executará as operações CRUD.
Por exemplo:
// roteador.js
const Usuário = exigir("./userModel")
Criando um documento
Um documento é uma instância de um modelo. Existem várias maneiras de criar e salvar um documento no MongoDB usando o Mongoose.
Primeiro, você pode criar uma instância da classe do seu modelo e depois chamar o salvar método nele.
Por exemplo:
//Criando um novo usuário
deixar usuário = novo Do utilizador({
nome,
e-mail,
idade,
});
//Salvando usuário no banco de dados
do utilizador
.salvar()
.então(() => {
console.registro("Usuário criado com sucesso");
})
.pegar((erro) => {
//trata erro
});
O bloco de código acima cria e salva um novo Do utilizador documento para seu banco de dados MongoDB.
Você também pode salvar dados em seu banco de dados usando o criar método. O criar O método instancia seu modelo e chama o método salvar método nele. Em outras palavras, combina as duas operações da técnica mencionada anteriormente.
Por exemplo:
User.create({ nome, e-mail, idade }, (err, dados) => {
se (errar) lançarnovoErro("Erro do Servidor Interno");
console.registro(`Usuário criado com sucesso: ${dados}`);
});
O bloco de código acima cria um novo Do utilizador documento com as propriedades passadas como um argumento para o criar método.
Como alternativa, você pode salvar dados em seu banco de dados usando o inserirmuitos método. Embora esse método seja ideal apenas para salvar dados em lotes.
Por exemplo:
User.insertMany(
[
{ nome, e-mail, idade },
{ name_1, email_1, age_1 },
],
(erro, resultado) => {
se (err) {
//trata erro
} outro {
//Enviar resultados
}
}
);
O bloco de código acima cria dois novos documentos no Do utilizador coleção usando a matriz passada como um argumento para o inserirmuitos método.
Lendo um documento
Você pode acessar todos os documentos salvos em seu banco de dados MongoDB usando o Mongoose's encontrar método.
Por exemplo:
User.find({})
.então((dados) => {
console.log (dados);
})
.pegar((errar) => {
//trata erro
});
O bloco de código acima retornará todos os documentos no Do utilizador coleção.
Você também pode localizar todos os documentos que correspondem a uma consulta específica passando uma consulta para o método find.
Por exemplo:
// encontra todos os documentos em que a idade é de pelo menos 18 anos
Usuário.find({ idade: { $gte: 18 } })
.então((dados) =>console.log (dados))
.pegar((erro) =>console.log (erro));
O bloco de código acima retornará todos os documentos com valor de idade maior que 18 no Do utilizador coleção.
Como alternativa, você pode ler registros únicos usando o findById método e passando um ID de documento como um argumento ou usando o método encontrar um método e passando um filtro como argumento.
Por exemplo:
//findById
User.findById (id, (erro, resultado) => {
se (resultado) console.log (resultado);
se (erro) console.erro (erro)
});
//findOne
Usuário.findOne({ e-mail: "johnson@example.com" }).então((do utilizador) => {
se (!do utilizador) {
//trata erro
}
//envia resposta
});
No bloco de código acima, o findById O método retorna o documento com o ID correspondente. O encontrar um método retorna o primeiro documento com o e-mail johnson@example.com.
Atualizando um documento
Você pode atualizar um documento no MongoDB com Mongoose usando o encontrarByIdAndUpdate método. Este método recebe um ID e um objeto com os detalhes atualizados.
Por exemplo:
User.findByIdAndUpdate (id, req.body, (err, doc) => {
se (doc) {
//Envia resposta
}
se (err) {
//trata erro
}
});
O bloco de código acima atualiza o documento com um ID correspondente ao ID fornecido com o objeto de atualização fornecido (corpo req.).
Excluindo um documento
Você pode excluir um documento no MongoDB com Mongoose usando o encontrarByIdAndDelete método. Este método usa um ID como argumento e exclui o documento com o ID correspondente.
Por exemplo:
User.findByIdAndDelete (id, (erro, resultado) => {
se (resultado) {
//Trata resultado
}
se (erro) {
// Tratar erro
}
});
O bloco de código acima exclui um documento com o ID fornecido do seu banco de dados MongoDB.
Usando o Mongoose em seus aplicativos Express
Este artigo forneceu uma visão geral de como você pode usar o Mongoose em seu aplicativo expresso. Cobrindo como você pode estabelecer uma conexão com o MongoDB, estruturar e validar dados salvos em seu banco de dados MongoDB e executar operações CRUD simples.
Ao usar o Mongoose em seus aplicativos Express, você pode simplificar e agilizar as interações entre seu aplicativo e um banco de dados MongoDB.