Heim > Datenbank > MySQL-Tutorial > Hauptteil

So verbinden Sie koa2 mit MySQL in Nodejs

WBOY
Freigeben: 2023-06-01 12:40:06
nach vorne
1266 Leute haben es durchsucht

Abfrageergebnisse in Objekte oder Arrays konvertieren

In der realen Entwicklung sollten einige Abfrageergebnisse tatsächlich in ein Objekt eingefügt werden

JSON_OBJECT: () ist die Form des Schlüsselwerts

SELECT products.id as id, products.title as title, products.price as price, products.score as score,
	JSON_OBJECT('id', brand.id, 'name', brand.name, 'rank', brand.phoneRank, 'website', brand.website) as brand
FROM products LEFT JOIN brand ON products.brand_id = brand.id;
Nach dem Login kopieren

So verbinden Sie koa2 mit MySQL in Nodejs

In einer Viele-zu-Viele-Beziehung hoffen wir, ein Array abzufragen: # 🎜🎜#

  • Zum Beispiel sollten die Informationen zu mehreren Kursen eines Studenten in einem Array platziert werden;

  • #🎜 🎜#Das Array speichert Objekte natürlich Informationen;
  • Zu diesem Zeitpunkt benötigen wir
  • JSON_ARRAYAGG

    und JSON_OBJECT# 🎜🎜# In Kombination verwenden; #🎜 🎜#

  • SELECT stu.id, stu.name, stu.age,
    	JSON_ARRAYAGG(JSON_OBJECT('id', cs.id, 'name', cs.name)) as courses
    FROM students stu
    LEFT JOIN students_select_courses ssc ON stu.id = ssc.student_id
    LEFT JOIN courses cs ON ssc.course_id = cs.id
    GROUP BY stu.id;
    Nach dem Login kopieren
Verwendung von mysql2

So verbinden Sie koa2 mit MySQL in NodejsInstallieren Sie mysql2:

npm install mysql2
Nach dem Login kopieren

Einfach zu verwenden:

const mysql = require('mysql2');

// 1.创建数据库连接
const connection = mysql.createConnection({
  host: 'localhost',
  port: 3306,
  database: 'coderhub',
  user: 'root',
  password: 'Coderwhy888.'
});

// 2.执行SQL语句
const statement = `
  SELECT * FROM products WHERE price > 6000;
`
connection.query(statement, (err, results, fields) => {
  console.log(results);
});
Nach dem Login kopieren

Wenn wir den Dienst nach Erhalt der Daten stoppen möchten, können wir in die Rückruffunktion schreiben:

connection.end()
Nach dem Login kopieren

Vollständiger Code:

connection.query(statement, (err, results, fields) => {
  console.log(results);
  connection.end();
});
Nach dem Login kopieren

Vorbereitete Anweisung (vorverarbeitete Anweisung)

Leistung verbessern: Senden Sie das erstellte Anweisungsmodul an MySQL, und dann kompiliert (analysiert, optimiert, konvertiert) MySQL das Anweisungsmodul und speichert

aber später, wenn wir es tatsächlich ausführen, werden wir

mit tatsächlichen Parametern versorgen, selbst wenn es mehrmals ausgeführt wird, wird es nur einmal kompiliert, sodass die Leistung höher ist;# 🎜🎜#

Hervorhebung: Wenn die Anweisung erneut ausgeführt wird, wird sie aus dem LRU-Cache (Least Recent Used) abgerufen, wodurch die Zeit zum Kompilieren der Anweisung zur Leistungsverbesserung entfällt.

// 2.执行SQL语句: 使用 ?来对参数进行占位
const statement = `
  SELECT * FROM products WHERE price > ? AND score > ?;
`
connection.execute(statement, [6000, 7], (err, results) => {
  console.log(results);
});
Nach dem Login kopieren

Verbindungspools?

Wir haben zuvor eine Verbindung (Verbindung) erstellt, aber wenn wir mehrere Anfragen haben, ist die Verbindung wahrscheinlich belegt. Dann müssen wir das tun bei jeder Anfrage eine neue Verbindung erstellen?

Tatsächlich stellt uns MySQL2 Verbindungspools zur Verfügung;

  • Verbindungspools können automatisch erstellt werden, wenn benötigt, und die erstellten Verbindungen werden nicht zerstört, sondern im Verbindungspool abgelegt und können später verwendet werden; , das ist die maximale Anzahl an Kreationen;

    Object Relational Mapping (ORM)

    : Es handelt sich um eine Programmierlösung:
  • In Bezug auf die Wirkung bietet es eine Möglichkeit, virtuelle in zu verwenden Programmiersprachen,
  • Die Wirkung der Objektdatenbank
  • Wir verwenden normalerweise Sequelize für das ORM in Node; 🎜#Sequelize ist ein Node. js-basiertes ORM für Postgres, MySQL, MariaDB, SQLite und Microsoft SQL Server;

Es unterstützt viele Funktionen; 🎜#

Wenn wir Sequelize mit MySQL verwenden möchten, müssen wir zuerst zwei Dinge installieren:

mysql2: Sequelize verwendet MySQL2, wenn MySQL betrieben wird; 🎜🎜#

sequelize: Verwenden Sie es, um Objekte Tabellen zuzuordnen;

Schritt 1: Erstellen Sie ein Sequelize-Objekt und geben Sie die Datenbank, den Benutzernamen, das Passwort, den Datenbanktyp, die Hostadresse usw. an;

Schritt 2: Testen Sie, ob die Verbindung erfolgreich ist;#🎜 🎜#

const mysql = require('mysql2');

// 1.创建连接池
const connections = mysql.createPool({
  host: 'localhost',
  port: 3306,
  database: 'coderhub',
  user: 'root',
  password: 'Coderwhy888.',
  connectionLimit: 10
});

connections.getConnection((err, conn) => {
  conn.connect((err) => {
    if(err){
      console.log('连接失败:',err)
    } else {
      console.log('数据库连接成功~')
    }
  })
})
Nach dem Login kopieren
Einzeltabellenoperation von Sequelize

const mysql = require('mysql2');

// 1.创建连接池
const connections = mysql.createPool({
  host: 'localhost',
  port: 3306,
  database: 'coderhub',
  user: 'root',
  password: 'Coderwhy888.',
  connectionLimit: 10
});

// 2.使用连接池
const statement = `
  SELECT * FROM products WHERE price > ? AND score > ?;
`
connections.execute(statement, [6000, 7], (err, results) => {
  console.log(results);
});
Nach dem Login kopieren
    Sequelizes paarweise Mehrfachoperationen #🎜🎜 #
    const mysql = require('mysql2');
    
    // 1.创建连接池
    const connections = mysql.createPool({
      host: 'localhost',
      port: 3306,
      database: 'coderhub',
      user: 'root',
      password: 'Coderwhy888.',
      connectionLimit: 10
    });
    
    // 2.使用连接池
    const statement = `
      SELECT * FROM products WHERE price > ? AND score > ?;
    `
    connections.promise().execute(statement, [6000, 7]).then(([results,fields]) => {
      console.log(results);
    }).catch(err => {
      console.log(err);
    });
    Nach dem Login kopieren
    #🎜🎜 #Viele-zu-viele-Operationen von Sequelize #🎜🎜 #
    npm install sequelize mysql2
    Nach dem Login kopieren

    Das obige ist der detaillierte Inhalt vonSo verbinden Sie koa2 mit MySQL in Nodejs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage