Выше мы познакомились с тем, как использовать докер для извлечения удаленного 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
для запроса