W celu skorzystania z bazy danych należy zainstalować mysql serwer, a następnie wczytać bazę z pliku.
Nawiązanie połączenia z bazą danych: w pliku app.js jest tworzenie połączenia z bazą danych.
Wymagany jest pakiet mysql dla npm, można zainstalować komendą npm install mysql
Nazwę użytkownika, hasło i nazwę bazy danych zmienić tak, aby paswowała do waszej stworzonej bazy mysql.
W celu korzystania z sesji - instalacja modułu express-session
Panel admina - znajduje się pod ukrytą ścieżką /admin
Dodając nową stronę trzeba zedytować pliki views/eader.ejs oraz routs/index.js. W routs/index.js dodajemy połączenie linku z adresem:
router.get('[ADRES]', function(req, res, next) {
res.render('[PLIK]', { page: '[STRONA]', title: '[TYTUŁ/PODSTRONA]' });
});
W pliku views/header.ejs dodajemy wpisy do menu. Tam mamy zagnieżdżone if-y. Pierwszy poziom to wybór menu w zależności od zmiennej page oznaczającej zestaw stron (np. niezalogowany użytkownik = main) oraz wpis menu:
<a class=
<% if(title=="[TYTUŁ/PODSTRONA]"){ %>
menu_s
<% } else{ %>
menu
<% } %> href="[ADRES]" tabindex="[NUMER LINKU]">[NAPIS PRZYCISKU]</a>
Numer linku służy do ustalenia kolejności przechodzenia pomiędzy elementami przy użyciu tabulacji. Na stronie tabindex wszystkich elementów ustawiamy na 100, wtedy przechodzenie będzie w kolejności: pasek menu => strona w kolejności wpisów html => stopka
Wymagania:
- node.js
- mysql (zalecana wersja 5.X)
$ apt-get install nodejs
$ apt-get install mysql
####Uwaga:
node.js nie wspiera nowego uwierzytelenienia wprowadzonego w mysql 8.X, więc jeżeli instalujesz wersję 8.X upewnij się, że hasło konta użytkownika używa starej wersji uwierzytelnienia: mysql_native_password. Więcej informacji i zmiana mechanizmu uwierzytelenienia:
https://stackoverflow.com/questions/50373427/node-js-cant-authenticate-to-mysql-8-0
SET GLOBAL validate_password_policy=LOW;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Domyślnie konto root'a jest bez hasła - chyba, że zostało ustawione przy instalacji. Komenda logowania (użytkownicy linuxa powinni wykonać ją za pomocą sudo):
$ mysql -u root
$ mysql -u root -p
mysql> create database Zespolowe;
Po zalogowaniu się tworzymy bazę. Nazwa nie ma znaczenia, Mateusz nazwał ją Zespolowe. Można ustawić inną, ale należy pamiętać, że trzeba ją później wszędzie ustawić, gdzie z niej korzystamy (domyślnie push'nieta jest nazwa 'Zespolowe'). Komenda:
create database nazwa_bazy
$ mysql -u username -p database_name < file.sql
$ mysql -u root -p Zespolowe < Zespolowe.sql
Jeżeli node został zainstalowany, pakiet npm powinien działać z poziomu konsoli. Przechodzimy do katalogu projektu (tam gdzie app.js) i jeżeli nie mamy folderu node_modules (nie korzystacie z archiwum Piotra), to należy wpisac:
$ npm install
$ npm install express
$ npm install mysql
$ npm install express-session
Archiwum Piotra nie zawierało mysql, należy więc wpisać ostatnią linijkę mysql.
Połączenie z bazą z poziomu projektu tworzone jest w pliku app.js, w linijkach (teraz 27-31):
dbconn = mysql.createConnection({
user: 'root',
password: 'password',
database: 'Zespolowe'
});
Jak coś inaczej skonfigurowaliście, to należy to zmienić.
$ npm install
$ npm start
Problemy przy odpalaniu:
- Authentication error (handshake): Patrz punkt 2
- Authentication failed (permission denied): Niepoprawny login/hasło (logowania do mysql/ustawione w app.js - punkt 6)
- Zainstaluj wymagane pakiety: npm install
- Zmodyfikuj w połączeniu z bazą hasło (jakie masz u siebie do mysqla)
- Sprawdzenie czy ktoś jest zalogowany odbywa się po stronie serwera poprzez funkcję req.isAuthenticated()
- Aby wywietlić w konsoli informacje o zalogowanym użytkowniku/barze wystarczy wpisać mozna uzyc url localhost:3000/test
- zmienna page: zalogowany uzytkownik ma zmienna page jako 'authenticated', niezalogowany 'main' -> ustawione w funkcji getPageVariable(req) w index.js