"Используйте nodejs для подключения к базе данных mysql"

MySQL

Выше мы познакомились с тем, как использовать докер для извлечения удаленного mysql, входа в эту базу данных и подключения. И управляйте базой данных в командной строке, например, просматривайте или работайте с таблицами в базе данных.

Вы также можете управлять базой данных с помощью node js. Просто mysql не интегрирован в родной модуль ноды, и нужно установить дополнительный модуль mysql: Ищите nodejs mysql, который является библиотекой этой библиотеки.официальный сайт гитхаб

Когда мы устанавливаем базу данных MYSQL с помощью докера, как получить к ней доступ? Есть только один способ получить доступ к базе данных — отправить команды SQL по сети, и сервер MYSQL выполнит их, а затем вернет результаты.

Мы можем напрямую вводить команды в окне командной строки для работы с сервером MYSQL. Для программ node js, если вы хотите получить доступ к MYSQL, вы также отправляете команды SQL на сервер MYSQL через сеть. тогда этоПакеты, которые могут получить доступ к серверу MYSQL, обычно называются драйверами MYSQL.Разные языки программирования также нуждаются в реализации собственных драйверов, поэтому на этот раз мы используем пакет mysql, реализованный узлом js. Это, безусловно, наиболее широко используемый драйвер с открытым исходным кодом.

1. Установка

yarn add mysql

2. Подключиться к базе данных

По примеру официального сайта создадим test.js,

const mysql      = require('mysql');
const connection = mysql.createConnection({
  host     : 'localhost',	//连接的数据库地址。(默认:localhost)
  user     : 'me',		//mysql的连接用户名
  password : 'secret',		// 对应用户的密码
  database : 'my_db'  		//所需要连接的数据库的名称(可选)
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

Сначала введите модуль mysql. использоватьmysql.createConnectionСоздайте объект соединения. Предоставьте сведения о сервере MySQL для подключения. Принимает объект в качестве параметра и должен передавать такие параметры, как хост, пользователь и т. д.

Чтобы успешно подключиться здесь, вы должны сначала получить mysql локально с помощью docker. Потому что я скачал старую версию docker, то есть docker toolbox, поэтому мне нужноhostсоответствующий'localhost'Замените его IP-адресом, который я получил после запуска быстрого запуска докера. Также можно использовать в командной строкеdocker-machine ipполучать. Если новая система docker или max linux, не заменяйте.

Затем вызовите объект подключенияconnectспособ подключения к серверу базы данных MYSQL.

connection.queryМетоды можно использовать для запроса и выполнения любого правильного оператора SQL. Первый параметр — это строка инструкции sql, а второй параметр — функция обратного вызова после выполнения инструкции sql.

последнее использованиеconnection.end()Закройте соединение.

Эта библиотека mysql эквивалентна клиенту mysql.Посылая некоторые команды sql на сервер, сервер считывает/записывает данные из базы данных, а затем отправляет прочитанные данные обратно.

3. Создать базу данных, таблицу

//test.js
const mysql= require('mysql');
const connection = mysql.createConnection({
    host: '192.168.99.100',
    port:3306,
    user: 'root',
    password: '123456',
});

connection.connect();

connection.query('CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;', function (error, results, fields) {
    if (error) throw error;
    console.log('创建数据库')
    console.log(results)
});

connection.query('use mydb;')

connection.query(`CREATE TABLE IF NOT EXISTS myuser(
        name text,
        age int
    )`, function (error, results, fields) {
    if (error) throw error;
    console.log('创建表')
    console.log(results)
});

connection.end();

1. Заявление SQL для создания базы данных

все еще используюconnection.queryВыполните оператор sql, чтобы создать базу данных. Полное написание этого оператора sql:'CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;'

Создайте базу данных, а затем напишитеIF NOT EXISTSЕсли он не существует, он создается, и его не нужно создавать, если он существует. Далее следует имя создаваемой базы данных.

никогда не используйте utf-8 mysql, поскольку эта ошибка не исправлена, используйте кодировку utf8mb4.

2. Создайте таблицу

Чтобы создать таблицу, вы должны сначала войти в базу данных и создать таблицу в этой базе данных. В противном случае будет сообщено об ошибке.

connection.query('use mydb;')

Этот оператор sql можно увидеть как в командной строке, используйте базу данных.

Если вы создаете таблицу напрямую:CREATE TABLE IF NOT EXISTS myuserОн сообщит об ошибке, говоря, что в таблице должен быть хотя бы один столбец данных, поэтому при создании таблицы вам нужно записать в нее некоторые данные, синтаксис должен использовать()Оберните его и напишите сразу после имени таблицы. строка внешнего пакета''Также измените его на пару обратных кавычек.

3. Беги

затем бегиnode test.jsЭто успех:

4. Проверка командной строки

Подключаемся по очереди в командной строке, вводим mysql, используемshow databases;Команда для просмотра существующей базы данных, вы можете видеть, что база данных mydb была создана.

затем используйте эту базу данныхuse mydb;Просмотрите таблицы в этой базе данныхshow tables;Просмотрите конкретное содержимое таблицы, оно отобразит столбцы в таблице и все ее атрибуты.describe myuser;Вы можете видеть, что мы создали таблицу myuser и записали данные в таблицу

4. ORM и Sequelize

Если вы напрямую используете интерфейс, предоставляемый этим пакетом mysql, для доступа к базе данных, код, который мы пишем, будет относительно низкоуровневым, поскольку прямой доступ к нему осуществляется с помощью написания команд SQL.

Фактически таблица базы данных представляет собой двумерную таблицу, которая может иметь несколько строк и несколько столбцов. Структура этой таблицы может быть сопоставлена ​​с объектом JS, и каждая строка может быть представлена ​​объектом. Каждое поле столбца — это каждое свойство объекта. ЭтоТехнология ORM: объектно-реляционное отображениеЭто сопоставление структуры таблицы реляционной базы данных с объектом

Кто будет делать это преобразование? Это структура ORM Sequelize — это своего рода структура ORM, которая позволяет нам читать и записывать объекты JS и помогает нам превращать объекты в каждую строку в таблице.

Упорядочить официальную документацию

Сделать это в соответствии с документацией относительно просто.

const { Sequelize,Model, DataTypes} = require('sequelize');

const sequelize = new Sequelize('HU', 'root', '123456', {
    host: '192.168.99.100',
    dialect: 'mysql'
});

class User extends Model {}
User.init({
    username: DataTypes.STRING,
    age:DataTypes.INTEGER
}, { sequelize, modelName: 'user' });

(async () => {
    await sequelize.sync();
    const jane = await User.create({
    username: 'janedoe',
    birthday: new Date(1980, 6, 20)
    });
  
    const users_name = await User.findAll({
        where: {
            username:'huanqi'
        }
    });
    console.log("All users:", JSON.stringify(users_name, null, 2));
})();

Основной концепцией Sequelize является модель. В Sequelize модель — это класс, наследующий Model, что эквивалентно структуре таблицы в базе данных. Экземпляр объекта, созданный этим классом, эквивалентен строке в таблице.

Во-первых, новый Sequelize создает объект подключения для продолжения, который содержит информацию о подключенной базе данных mysql. Затем объявите модель с именем User. Использование User.init для инициализации этой модели означает инициализацию таблицы, что такое атрибуты (столбцы) и их типы данных. Второй параметр — это объект, к которому нужно подключиться.

sequelize.sync()Мы использовали синхронизацию модели и таблицы, потому что таблица может уже существовать или иметь разные столбцы, поэтому мы должны ее синхронизировать.

User.createЧтобы создать экземпляр объекта с моделью, нужно добавить строку данных в таблицу. Все это асинхронно, эквивалентно обещанию, поэтому использование await очень лаконично.

User.findAllдля запроса