MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como salvar meus dados no mongoDB usando expressjs?


mangusto é um framework que facilita a interação com o MongoDB. Na verdade, você basicamente nunca quer fazer toda a validação, conversão e clichê de lógica por conta própria, então por que reinventar a roda.
E já que você é um iniciante, não tenha medo de frameworks. Existem muitos frameworks úteis para muitas áreas de back-end e front-end para facilitar sua vida.

O artigo que você compartilhou é autoexplicativo, mas vou resumir apenas a parte do banco de dados para você (não vou me aprofundar no seu código, sem trabalho de burro. o resto é com você):

1) Primeiro de tudo instale o mangusto.

npm install mongoose

O artigo tem --save que não é mais necessário adicionar, como "npm install salva todos os pacotes especificados em dependências por padrão."(ref. )

2) para poder acessar e usar mangusto , você precisa importá-lo, em forma de nó, que é require() .
const express = require(‘express’)
const mongoose = require(“mongoose”);
const bodyParser = require(‘body-parser’);  

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true })); 


E o que é body-parser lá para?
Ao lidar com banco de dados em expresso, mais cedo ou mais tarde você encontrará erros como este .
e o motivo pelo qual precisamos de um é melhor explicado em esta resposta .
Além disso, as versões recentes do express têm seu próprio analisador de corpo agora, então você pode usar app.use(express.json()) em vez de app.use(bodyParser.json()) .
Importante: body-parser deve estar antes de suas rotas.

3) use mongoose.connect(url) .

url argumento é o que você encontra em seu MongoDB Atlas . :

Local:guia clusters -> conectar -> conectar seu aplicativo -> driver node.js

O que lhe dá, algo assim:
mongodb+srv://<user>:<password>@,cluster>.mongodb.net/test?retryWrites=true&w=majority

Importante: você usa usuário e senha do usuário que você criou na guia Acesso ao Banco de Dados, não seu próprio usuário e senha.

Você pode configurar suas variáveis ​​de ambiente para proteger dados confidenciais e mutáveis. Mas eu prefiro usar config.js para simplificar, e que geralmente reside na raiz do app.

Não só você pode protegê-los (como usar .gitignore ), mas também modificá-los facilmente, pois existem variáveis ​​que podem mudar de um ambiente para outro, tornando-os disponíveis em um só lugar e fáceis de encontrar, em vez de procurar que eles mudem em todo o seu aplicativo.

Para .env abordagem de arquivo, leia este artigo .

Importante: caso você queira colocar seu código no github ou em qualquer lugar online, por isso usamos config.js , não esqueça de adicionar este arquivo em .gitignore para evitar que esses dados confidenciais vazem e sejam expostos a outras pessoas online.

em config.js você pode fazer isso:
exports.username = 'your user';
exports.pass = 'your pass';
exports.myCluster = 'your cluster's name';

Em seguida, importe-os assim:

const { username, pass, myCluster } = require('./config'); <- o caminho pode ser diferente para você!

Dica: Você pode usar back-tick (` ` ) para inserir facilmente essas variáveis ​​para const url , por meio de interpolação .

Aquilo é:
const url = `mongodb+srv://${username}:${password},${myCluster}.mongodb.net/test?retryWrites=true&w=majority`

Importante: certifique-se de lista de permissões seu IP do lado do MongoDB (atlas), caso contrário você receberá um erro de conexão. Em segurança :Acesso à rede -> Lista de permissões de IP
Você pode usar 0.0.0.0/0 para colocar todos os IPs na lista de permissões.
Além disso, ao usar VPN , seu IP também mudará.

4) por último, mas não menos importante , após conectar ao banco de dados, você precisa definir seu esquema :
const moviesSchema = new mongoose.Schema({
title: String,
year: Number,
rating: Number
});

E

const Movies = mongoose.model(“Movies”, moviesSchema);

Dica: Um erro comum que muitos novatos cometem é esquecer de usar new :
new mongoose.Schema({...})

Se você quiser criar seu modelo em um arquivo separado (que é a melhor prática), você precisará modificar seu const Movies assim:

module.exports = mongoose.model(“Movies”, moviesSchema);

Não se esqueça de adicionar const mongoose = require('mongoose'); nesse arquivo de modelo js separado.

E onde quer que você use esse modelo, você importa assim:

const Movies= require('../models/movies'); (o caminho pode ser diferente para seu aplicativo)

O resto, meu amigo, é com você. O que você deseja fazer com seu banco de dados e como usá-lo.

Nota para os outros:dediquei tanto tempo e atenção a isso enquanto escrevia. Por favor, se você vir algo errado ou achar que pode adicionar algo, fique à vontade para editar e melhorar minha resposta.