Новичку полезно

  • А знаете ли вы что?

    - rudvs приносит инновации в наш мир.


Node.JS Mysql

Теги: Node.JS, Mysql, node-mysql

Введение

Доброго времени суток уважаемый читатель! Мы продолжаем наше знакомство с новой технологией серверного программирования на Node.JS.

Как вы поняли сегодня мы будем говорить о том, как работать с базой данных MySQL программируя на Node.JS. Для удобного соединения с MySQL сервером есть несколько уже готовых модулей и с каждым днем их становится все больше и больше. Но мы остановимся на самом удобным модуле на мой взгляд - это node-mysql.

Модуль node-mysql — является клиентским приложения для соединения с сервером базы данных MySQL, его функционал больше похож на PHP или Perl. Ну, что же давайте переходить от слов к практике.

Подготовка

Для работы нам понадобится естественно сам MySQL сервер, скачать и установить можно по этой ссылке. После того как скачаете и установите, необходимо заранее создать новую базу и таблицу.

CREATE DATABASE `node` DEFAULT CHARACTER
SET utf8 COLLATE utf8_general_ci;
USE node;
CREATE TABLE `users` (
  `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `name` VARCHAR( 255 ) NOT NULL ,
  `password` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;

Далее нам необходимо установить сам модуль, так как в стандартной комплектации с Node.JS он не поставляется. Его установка не вызовет никакого затруднения с использованием пакетного менеджера npm.

Введите следующую команду:

npm install mysql

Теперь мы имеем все необходимое для полноценного программирования. Давайте откроем файл index.js который мы создали в прошлой статье.

Программирование

С чего же мы начнем? Ну, конечно же с прикрепления модуля mysql. Как это делается, вспоминаем из прошлой статьи, кто не вспомнил напоминаю:

var mysql = require('mysql');

Теперь к файлу index.js прикреплен модуль mysql и мы можем воспользоваться его API функциями. Первым делом нам необходимо присоединиться к MySQL серверу, для этого создаем соединение:

var client = mysql.createClient();

В переменную client мы поместили только что созданное соединение, теперь давайте его осуществим.

client.host='127.0.0.1';
client.port= '3306';
client.user='root';
client.password='12345';
client.database='node';

В первой строке мы задаем Ip-адрес MySQL сервера, к которому мы будем подключаться. Далее в строке client.port мы задаем норме порта на котором висит наш MySQL сервер, теперь проходим аутентификацию передаем в следующих двух строчках имя пользователя и пароль сервера базы данных. В последней строчке мы задаем имя базы данных к которой необходимо соединяться.

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

client.query(sql код, [params, cb])

Давайте сделаем запрос на добавлению, затем на выборку и выведем результат в терминал.

// Запрос на добавление
client.query('INSERT INTO users VALUES (1, \'Admin\', \'12345\')', function(){
// Запрос на выборку
client.query('SELECT * FROM users', function(error, result, fields){
// Если возникла ошибка выбрасываем исключение
if (error){
  throw error;
}
// Выводим результат
console.log(fields);
console.log(result);
// Завершаем соединение
client.end();
});
});

Комментарии комментариями, но доскональна разобраться все же стоит. Первая строчка создает новую строку в таблице users с именем пользователя «Admin» и паролем «12345». Далее мы создаем анонимную функцию в которой делаем запрос на выборку

client.query('SELECT * FROM users', function(error, result, fields){

В данном запросе мы выбрали все поля в таблице «users», затем выводим результат в созданной анонимной функцией с параметрами «error», «result» и «fields». Где «error» - является возникшей ошибкой (если конечно же она возникла), «result» - это массив объектов результата запроса и «fields» -описание полей из множества полей результата.

Далее мы делаем условие в котором говорится, что в случае ошибки необходимо делать исключение и не останавливать WEB — сервер. Строчки

console.log(fields);
console.log(result);

Как вы уже поняли выводят результат в консоль и вы получаете данные о выборке. И на конец мы завершаем соединение

client.end();

Консоль — это конечно хорошо, но у новичков часто возникает ряд проблем с выводом результата на страницу. Так как они пытаются засунуть объект result и получают ошибку.

Сегодня мы обсудим как правильно выводить данные на страницу из объекта result. Как уже говорилось выше result является массивом полученного результата, а как мы помним массив состоит из ячеек и задаются они в квадратных скобках:

result[0]

Но для вывода результата этого не достаточно, необходимо указать конкретный столбец:

result[0].id

То есть полный запрос будет выглядеть следующим образом:

'ID: '+result[0].id+' Имя: '+result[0].name+' Пароль: '+ result[0].password

Но у нас в базе может быть большое количество записей давайте для этого напишем следующий код:

var sors = 'ID: ';
for(var i = 0; i ';
}

Здесь мы с использованием цикла for переберем все полученные данные которые находятся в массиве result и сделав конкатенацию к переменной sors, на выходе получаем переменную sors с полным списком значений. Код файла index.js будет выглядеть следующим образом:

var http = require('http');
var mysql = require('mysql');
function web(req, res) {
  var client = mysql.createClient();
  client.host='127.0.0.1';
  client.port= '3306';
  client.user='root';
  client.password='123';
  client.database='node';
  client.query('SELECT * FROM users', function(error, result, fields){
    // Если возникла ошибка выбрасываем исключение
    if (error){
      throw error;
    }
    // выводим результат
    var sors = ' ID: ';
    for(var i = 0; i ';
    }
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write(sors);
    res.end();
  });
  // Завершаем соединение
  client.end();
}
http.createServer(web).listen(8888);
console.log('Сервер был запущен '+Date()+ ' И доступен по адресу "http://localhost:8888/" ');

Вывод

Ну, вот собственно и все что вам необходимо знать для работы с модулем node-mysql. Все остальное придет со временем, главное, чтобы присутствовал креатив и вы могли импровизировать.

На сей ноте нам пора закончить сегодняшнюю беседу, рад если вам помогла данная статья.

Добавить комментарий


Обновить