Einführung: Nach dem vorherigen NodeJS Hallo, Welt! Wir können auch andere leistungsstarke Funktionen sehen. Mit der derzeitigen Popularität der NodeJS -Community und der Unterstützung einer großen Anzahl von Ingenieuren wurde eine große Anzahl von Modulen allmählich eingeführt.
Inhalt: Das Folgende zeigt die Interaktion zwischen Nodejs und MySQL.
Zu diesem Zeitpunkt müssen Sie NodeJs MySQLs Modul hinzufügen. Zu diesem Zeitpunkt wurde der im vorherige Kapitel erwähnte NPM (Knotenpaketmanager) aktiviert.
Installieren Sie das MySQL -Modul in NodeJs:
Die Codekopie lautet wie folgt:
$ npm install MySQL
JS -Skript mySqltest.js
Die Codekopie lautet wie folgt:
// mysqltest.js
// MySQL -Modul laden
var client = fordert ('mySQL'). Client,
client = new client (),
// Der zu erstellende Datenbankame
Test_database = 'nodejs_mysql_test',,
// Der zu erstellende Tabellenname
Test_table = 'test';
// Benutzername
client.user = 'root';
//Passwort
Client.Password = 'root';
// eine Verbindung erstellen
Client.Connect ();
client.query ('Datenbank erstellen'+test_database, function (err) {
if (err && err.number! = client.error_db_create_exists) {
errösten;
}
});
// Wenn kein Rückruf bereitgestellt wird, werden Fehler als "Fehler" emittiert
// Ereignisse des Kunden
client.Query ("Verwendung"+test_database);
Client.Query (
'Tabelle erstellen'+test_table+
'(ID int (11) Auto_increment,'+
'Titel varchar (255),'+
"Text Text"+
"DateTime erstellt",+
'Primärschlüssel (ID)' ''
);
Client.Query (
'In'+test_table+''+einfügen
'Set title =?, Text =?, Erstellt =?',,
['Super cool', 'Dies ist ein schöner Text', '2010-08-16 10:00:23']
);
var query = client.Query (
'In'+test_table+''+einfügen
'Set title =?, Text =?, Erstellt =?',,
['ein weiterer Eintrag', weil 2 Einträge einen besseren Test machen ',' 2010-08-16 12:42:15 ']
);
Client.Query (
'Auswählen * von'+test_table,
Funktion SelectCB (Errt, Ergebnisse, Felder) {
if (err) {
errösten;
}
console.log (Ergebnisse);
console.log (fields);
Client.end ();
}
);
Skripte ausführen
Die Codekopie lautet wie folgt:
node mysqltest.js
Die Effekte sind wie folgt:
// mysql-demo.js
const mysql = fordert ('MySQL2/Promise'); // Verwenden Sie MySQL2, das das Versprechen unterstützt
erfordern ('dotenv'). config (); // Umgebungsvariable Management
// Verwenden Sie den Verbindungspool, um die Leistung zu verbessern
const pool = mysql.createpool ({{
Host: process.env.db_host || 'localhost',
Benutzer: process.env.db_user || 'Wurzel',
Passwort: process.env.db_password || 'Wurzel',
Datenbank: process.env.db_name || 'nodejs_mysql_test',
WaitforConnections: Richtig,
ConnectionLimit: 10,
Queuelimit: 0
});
// Tabellenstrukturdefinition (DDL -Management)
const table_schema = `
Tabelle erstellen, wenn nicht existiert Posts (
ID int Primärschlüssel Auto_increment,
Titel varchar (255) nicht null,
Inhaltstext,
erstellte_at datetime default current_timestamp,
updated_at datetime auf update Current_timestamp
) Engine = InnoDB Standard charSet = utf8mb4 colate = utf8mb4_unicode_ci;
`;
// Geschäftslogikverkapselung
Klasse postdao {
Konstruktor (Pool) {
this.pool = Pool;
}
Async initialize () {
erwarten Sie dies.pool.execute (table_schema);
console.log ('Tabelle verifiziert/erstellt');
}
Async CreatePost (post) {
const [result] = warte disu.pool.execute (
`In Beiträge einfügen (Titel, Inhalt)
Werte (?,?) `,
[post.title, post.content]
);
return {... post, id: result.insertid};
}
Async getPosts (Seite = 1, pageSize = 10) {
const offset = (Seite - 1) * pageSize;
const [Zeilen] = erwarte dies.pool.execute (
`Wählen Sie * aus Beiträgen aus
Bestellung von created_at dessen
Grenze? Offset? `,
[PageSize, Offset]
);
Zeilen zurückkehren;
}
Async TransactionDemo () {
const conn = erwarte dies.pool.getConnection ();
versuchen {
Warten Sie Conn.Begintransaction ();
// Transaktionsvorgang 1
Warten Sie Conn.execute (
`In Beiträge einfügen (Titel, Inhalt)
Werte (?,?) `,
['Transaktion 1', 'Atomic Operation Demo']
);
// Transaktionsvorgang 2
const [result] = wartet conn.execute (
`Update Posts Set content =?
Wo Titel =? `,
['Aktualisierter Inhalt', 'Transaktion 1']
);
Warten Sie Conn.Commit ();
Rückgabeergebnis;
} catch (err) {
Warten Sie conn.rollback ();
errösten;
} Endlich {
Conn.Release ();
}
}
}
// Ausführungsbeispiel
(async () => {
versuchen {
const dao = new Postdao (Pool);
erwarten Sie dao.initialize ();
// Erstellen Sie einen neuen Artikel
const newpost = warte dao.createpost ({{
Titel: 'Modern Node.js MySQL Guide',
Inhalt: 'Best Practices für Datenbankoperationen'
});
console.log ('erstellte Post:', NewPost);
// Pagination -Abfrage
Const posts = warte dao.getPosts ();
console.log ('Erste Seitenergebnisse:', Beiträge);
// Transaktionsdemo
const t txresult = warte dao.transactionDemo ();
console.log ('Transaktion abgeschlossen:', txresult);
// endgültige Abfrage
const finalposts = warte dao.getPosts ();
console.log ('endgültige Beiträge:', FinalPosts);
} catch (err) {
console.Error ('Anwendungsfehler:', err);
} Endlich {
warte pool.end ();
}
}) ();