Heim >Datenbank >MySQL-Tutorial >So verbinden Sie koa2 mit MySQL in Nodejs

So verbinden Sie koa2 mit MySQL in Nodejs

WBOY
WBOYnach vorne
2023-06-01 12:40:061274Durchsuche

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;

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;
Verwendung von mysql2

So verbinden Sie koa2 mit MySQL in NodejsInstallieren Sie mysql2:

npm install mysql2

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);
});

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

connection.end()

Vollständiger Code:

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

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);
});

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('数据库连接成功~')
    }
  })
})
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);
});
    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);
    });
    #🎜🎜 #Viele-zu-viele-Operationen von Sequelize #🎜🎜 #
    npm install sequelize mysql2

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen