Set-up Cloud Storage Google Cloud Platform*

Baza de date SQL - relationala

Prerequisites: Google Cloud Platform account!

NOTĂ IMPORTANTĂ: Este posibil ca adresa dv IP să se schimbe și asfel BD nu vă va mai accepta cererile de conectare. În cazul în care acest lucru se întâmplă, adăugați noua dv adresa IP în whitelist (Connections - ADD NETWORK. Instrucțiunile sunt în aceasta pagină, pasul 1)

1. Crearea , configurarea, pornirea instanței

  • Din consola Google Platform, accesați Serviciul SQL

  • În fereastra deschisa, selectați Create an instance, apoi Choose MySQL

  • Configurati instanța (am inclus un exemplu de setari minime mai jos) și apăsați pe Create instance

  • Crearea instanței poate dura câteva minute, wait up

  • Creați un user nou

  • Creați o baza de date nouă

  • By default, din motive de securitate, accesul la instanța nou creată este restricționată. De aceea va trebui să adăugăm măcar un IP "sigur" în secțiunea Connections.

  • Connections, Authorized networks, Add network, Add your IP Adress (Google it) and a name, Save and wait up

  • Acum ne putem conecta la baza de date și crea tabele

ATENȚIE: Ar fi indicat să opriți instanța (STOP în overview tab) atunci când nu o folosiți pentru a evita consumul resurselor gratuite.

2. Configurarea Bazei de Date

Putem configura baza de date nou creată atât folosind Shell-ul pus la dispoziție de Google Cloud Platform, dar și utilizând un program mai user-friendly precum MySQL Workbench (sau orice alt instrument cu care sunteți obișnuiți). În continuare vom folosi MySQL Workbench.

  • În MySQL Workbench, click Database, Manage Connections... , click New

  • Denumiți conexiunea, adăugați adresa IP Publică a instanței nou create (o găsiți în Google Cloud Platform, Overview, în secțiunea Connect to this instance), adăugați numele și parola user-ului creat anterior. Click Test Connection și ar trebui să primiți un mesaj de succes. În caz contrar, verificați ca pașii de mai sus să fi fost parcuși corect (user creat, parola corecta, adresa IP publică e corecta, adresa voastră e inclusă în whitelist...)

  • Dacă mesajul de Succes a apărut, click close, mergeți toolbar, Database, Connect to Database, selectați conexiunea voastră, click OK

  • Se va deschide o consolă în care puteți face interogări. Pentru a vedea bazele de date disponibile, utilizați comanda "show databases". În lista bazelor de date va apărea și baza de date creată mai devreme

  • Vom crea prima tabela și vom introduce 2 rânduri rulând următoarele comenzi

USE `cc-db`;

CREATE TABLE messages (
    entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID),
    senderName VARCHAR(255), 
    senderMail VARCHAR(255), 
    receiverMail VARCHAR(255), 
    messageContent TEXT(65535)
    );
    
    INSERT INTO messages (senderName, senderMail, receiverMail, messageContent) values ("Popescu Ion", "popescu_ion@gmail.com", "popescu_ioana@gmail.com", "Hello!");
    INSERT INTO messages (senderName, senderMail, receiverMail, messageContent) values ("Popescu Ion", "popescu_ion@gmail.com", "popescu_ioana@gmail.com", "Hello hello hello!");
  • Rulați SELECT * FROM messages; pentru a verifica introducerea datelor cu succes.

3. Conectarea Bazei de Date la Back-end

Ultimul pas constă în conectarea Bazei de Date din Cloud la Back-end-ul creat anterior.

  • În proiectul asociat Back-end-ului creați un fișier .env - acesta va fi utilizat pentru a stoca informațiile de conectare la baza de date (aceleași informații pe care le-ați folosit și la crearea conexiunii in SQL Workbench). Acestea ATENȚIE: Nu va fi urmărit de git și nu trebuie niciodată afișat public deoarece poate compromite securitatea bazei de date.

// .env
NODE_ENV=development

INSTANCE_HOST="..."
DB_PORT=3306
DB_USER="cc-cms-user" 
DB_PASS="..." 
DB_NAME="cc-db"
  • Instalați pachetele "mysql" si "dotenv" (npm install ...) (Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env)

  • Pentru a păstra fișierul index.js cât mai curat, vom crea un fișier nou, db.js pentru a realiza conexiunea la baza de date.

// db.js
const mysql = require("mysql");
const dotenv = require("dotenv");
dotenv.config();

const connection = mysql.createConnection({
  host: process.env.INSTANCE_HOST,
  port: process.env.DB_PORT,
  user: process.env.DB_USER,
  password: process.env.DB_PASS,
  database: process.env.DB_NAME,
});

connection.connect(function (err) {
  if (!err) {
    console.log("Database is connected!");
  } else {
    console.log("Database is not connected... " + err);
  }
});

module.exports = connection;
  • Puteți observa că informațiile pentru conectarea la BD sunt "protejate" prin utilizarea fișierului .env

  • În fișierul index.js, includeți modulul creat anterior

const connection = require("./db.js");
  • Putem folosi acum conexiunea creată pentru a defini primul endpoint al API-ului nostru pentru metoda GET. Vom folosi metoda .query() pentru a interoga baza de date și a primi toate rândurile din tabela "messages". La final, fișierul index.js va avea următorul cod

// index.js
const express = require("express");
const connection = require("./db.js");

const app = express();
const port = process.env.PORT || 8080;

app.listen(port, () => {
  console.log(`Example app listening on port ${port}!`);
});

app.get("/messages", (req, res) => {
  connection.query("SELECT * FROM messages", (err, results) => {
    if (err) {
      return res.send(err);
    }

    return res.json({
      data: results,
    });
  });
});
  • Putem testa funcționalitatea creată cu ajutorul Postman

  • Putem introduce acum și endpoint-uri pentru alte metode...

Last updated