Collegare database Atlas Db

Ciao a tutti, volevo dei chiarimenti, mettiamo caso che io dovessi collegare il mio database alla mia app con il seguente codice:

const mongoose = require("mongoose");

exports.connect = () => {

    const uri = process.env.ATLAS_URI;
    const connectionParams = {
      useNewUrlParser: true,
      useCreateIndex: true,
      useUnifiedTopology: true
    };
    
    mongoose.connect(uri, connectionParams)
      .then(() =>
        console.log("Database successfully connected")
      )
      .catch((err) => 
        console.log(`Error connecting to the database:\n${err}`)  
      );
    
    return mongoose.connection;

};

volevo sapere, una volta creata la variabile segreta .env (che in questo caso è ATLAS_URI), e averle assegnato il valore della mia uri, come faccio a utilizzare la variabile stessa? perchè se faccio inserisci variabile e la metto nello script non me lo collega al db, se la lascio non inserita non collega niente lo stesso, chiedo aiuto a voi!

La domanda è piuttosto vaga, non capisco esattamente cosa stai chiedendo.

In ogni caso come refresh iniziale le variabili d’ambiente (credo si chiamino cosi in italiano :smile: ) si possono leggere da node in due modi:

  • aggiungendole in riga di comando quando lanci node, perchè il process module di node le veda
ATLAS_URI="whatever" node server.js
  • caricandole da un file esterno (.env), ma per farlo hai bisogno di un package esterno:
    dotenv - npm
    Questo è quello che FCC fa dietro le quinte.

Trovi tutte le info qui:

Fammi sapere se aiuta :sparkles:

Ti spiego, io devo collegare il mio database tramite quel codice, e per farlo ovviamente mi serve la mia uri, che dovro inserire in ATLAS_URI essendo quella la variabile che la contenga, ora finora ho sempre collegato il mio db col seguente codice:

const mongoose = require("mongoose");
mongoose.connect("myUri", { useNewUrlParser: true, useUnifiedTopology: true });

ora però ho bisogno di utilizzare la variabile d’ambiente, ho provato a inserire nel file sample.env su replit, ma non me la prende nello script che ho scritto che serve a collegare il database, la mia domanda è: ho la mia variabile d’ambiente ATLAS_URI che devo comunque riempire con la uri del mio database, ma in sostanza come faccio? se non me la legge mettendola in sample.env, dove devo inserire la mia uri per collegare il databse? non ci sono mai riuscito tramite la variabile d’ambiente :face_with_diagonal_mouth:

A questo punto, la tua domanda diventa:

come posso caricare variabili d’ambiente in reaplit

Importante essere precisi, per il semplice fatto che piu sei preciso, migliori possono essere le ricerche su google per trovare risposte. (il 99% del lavoro di un programmatore) :smile:

Hai due modi.
1- utilizzando quello che replit ti fornisce nella piattaforma:

2 - se apri il link che ti ho mandato, quello a proposito di node env variable vedi che parla di un package chiamato dotenv. Ora se apri il link alla pagina di npm vedrai che dotenv ha una sezione Quickstart.

Quindi se scegli questa strada devi:

  • installare dotenv
  • avere i tuoi segreti in un file chiamato .env (non secret.env)

Sono stato un po pedante nella risposta, non per essere superiore o “snob”. Al contrario per farti vedere come ci si puo ragionare sopra i problemi per trovare soluzioni.

Ovvio che piu hai pratica, piu tutto cio è semplice :slight_smile:
Ma non ti scoraggiare e vedrai che in un baleno diventerai un pro! :muscle:

Non ti preoccupare con me di come puoi apparire, non sono quel tipo :slightly_smiling_face:. Detto questo si la mia domanda era proprio come usare le variabili d’ambiente su replit. Ti dico quello che ho fatto io per arrivare all’obiettivo:

  • ho scritto sul terminale npm i dotenv installandolo
  • sono andato nel file sample.env nel mio progetto replit, qui ho scritto la variabile ATLAS_URI='myUri' dove la stringa myUri corrisponde all’uri del mio database.
    Fondamentalmente ho eseguito questi passaggi, nelle guide da te postate vedo che comunque questi siano i passaggi da fare, in ogni caso continuerò a rileggerle e a lavorarci sopra un bel po’, devo vincere io :joy:

Ricorda che dotenv legge un file chiamato .env
Il tuo ha un altro nome. Penso il problema sia solo quello :+1:

ho risolto e collegato il database ma non usando la variabile d’ambiente, prima o poi la imparerò :sweat_smile: grazie mille comunque :+1: :slightly_smiling_face:

Ti consiglio di usare una variabile d’ambiente, perché se non lo fai, nel momento in cui metterai il tuo progetto su github le tue informazioni di connessione al database diverranno pubbliche. Parlo di username e password.

Come già suggerito ti consiglio anche io di usare dotenv. Non é complicato e basta scrivere qualche riga di codice per avere le tue informazioni al sicuro. Se invece usi replit, é ancora più semplice. Se hai bisogno di aiuto chiedi senza problemi.

no ma infatti i miei progetti non li ho postati su github anche per questo. Comunque per collegare il database tramite la variante d’ambiente io installo dotenv, poi vado nel file sample.env e li scrivo la mia variabile d’ambiente in maiuscolo assegnadole il valore della mia uri, ma non mi funziona! :sweat_smile: non capisco davvero dove sbaglio, eppure nelle guide che mi avete mandato anche voi questo è il procedimento mi pare d’aver capito, ma niente. :man_shrugging:

su replit questo intendo