За последние 24 часа нас посетили 22805 программистов и 1263 робота. Сейчас ищут 775 программистов ...

js и mysql

Тема в разделе "JavaScript и AJAX", создана пользователем noice, 11 окт 2019.

Метки:
  1. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    немного начал изучать js и столкнулся с проблемкой, все пишут что js работает с sql через node.
    поставил эту ноду и там забпросы к бд чтоб запустить надо в консоли запускать типа node connect.js
    а как запросы из сайта на js посылать через эту ноду непонятно.
    Неужели выход только через php?
    Или как это делается? js + node + mysql без php. может есть у кого ссылка на скрипт пример
     
  2. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Node - это javascript (со своими особенностями) выполняющийся на сервере

    А то, что вы называете "js" - это javascript выполняющийся на клиенте (в браузере, например)

    То есть:

    javascript - И там, И там, НО в разных местах, и на разных компьютерах :)

    Схема такая:

    1. Скрипт на клиенте (напр. в браузере) генерирует запрос с веб-серверу, скажем, при помощи библиотеки Axios или еще как-то.

    2. Веб-сервер (под управлением Node) принимает этот запрос, и, при необходимости формирует запрос к серверу баз данных (MySQL)

    3. Сервер баз данных, обрабатывает запрос, и посылает ответ с данными веб-серверу.

    4. Веб-сервер (под Node.js) получает ответ от сервера баз данных (MySQL), обрабатывает его, и формирует ответ клиенту (браузеру).

    5. Клиент (браузер) получает ответ от сервера, форматирует его, и выводит пользователю на экран.

    6. PROFIT!!!

    :)

    И да, PHP при таком раскладе совершенно не нужен. Собственно, в этом и есть главная фишка Node (если не рассматривать асинхронность) - не нужно учить другой язык, если уже знаешь JavaScript.
     
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Немного стал изучать js и параллельно node.js это не совместимые вещи. Убьёте очень много времени на изучение node js не зная досконально самой js.
    Какую задачу вы сейчас пытаетесь решить? Я вам просто покажу пример без node, но с использованием js.
    Вообще обычно если для работы с mysql вам понадобился js это значит что вам нужно динамически обновить данные на странице. Для этого есть ajax запросы. Минимально размер кода у библиотеки jquery, в js особо вникать не придется.
    Вот простой пример вам. Есть фаил php, назовем его test.php
    PHP:
    1. <?php
    2. echo 'Я фаил test.php';
    И допустим вам надо вытянуть данные с этого файла но без перезагрузки страницы.
    Для этого у jquery есть функция $.get
    https://api.jquery.com/jquery.get/

    Для нашего файла запрос будет таким:
    Код (Javascript):
    1. $.get( "test.php", function( data ) {
    2.  
    3. });
    Переменная data будет содержать такую строку 'Я фаил test.php' ;

    Например, мы хотим вставить эту строку на страницу, в какой нибудь блок с id dom_trest. Код будет таким
    Код (Javascript):
    1. $('#dom_test').html(data);
    И полный код будет таким
    HTML:
    1. <!doctype html>
    2. <html lang="en">
    3.   <head>
    4.     <!-- Required meta tags -->
    5.     <meta charset="utf-8">
    6.     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    7.     <title>Hello, world!</title>
    8.   </head>
    9.   <body>
    10.     <div id="dom_test">Сюда вставим данные из test.php</div>
    11.     <button id="start">Обновление из test.php</button>
    12.     <script src="https://code.jquery.com/jquery-3.4.1.min.js" ></script>
    13.     <script>
    14.         $('#start').click(function() {  //нажатие на кнопку Обновление из test.php
    15.             $.get( "test.php", function( data ) {
    16.                 $('#dom_test').html(data);
    17.             });
    18.         });
    19.     </script>
    20. </body>
    21. </html>
    Так же можно передать данные в этот фаил, это уже сами разберетесь https://api.jquery.com/jQuery.post/
     
    #3 Artur_hopf, 11 окт 2019
    Последнее редактирование: 11 окт 2019
    Roman __construct нравится это.
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    А если все же хочется изучать чистый js, то тот же функционал будет выглядеть так:
    Код (Javascript):
    1. function getAjax(url, success) {
    2.     var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
    3.     xhr.open('GET', url);
    4.     xhr.onreadystatechange = function() {
    5.         if (xhr.readyState>3 && xhr.status==200) {success(xhr.responseText);}
    6.         if (xhr.status==500) { console.log(xhr.responseText); }
    7.     };
    8.     xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    9.     xhr.send();
    10.     return xhr;
    11. }
    12.  
    13. let dom_test = document.getElementById('dom_test'),
    14.     start = document.getElementById('start');
    15.  
    16. start.onclick = function() {
    17.     getAjax('test.php', function(data){
    18.         dom_test.innerHTML = data;
    19.     });
    20. }
     
    Roman __construct нравится это.
  5. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    С файлом такое может и прокатит (могут быть нюансы с CORS), а вот с MySQL без ноды по-любому никак :)

    И собственно, основные сложности там как раз не с CRUD как таковым будут, больше всего головняков с аутентификацией/авторизацией.

    Хотя если просто читать из БД через открытое API - тогда это проще конечно.
     
  6. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    спасибо за ответы, но да надо именно доступ к sql. Задача к примеру такая записать в sql данные пользователей при регистрации.

    как решается задача записи данных пользователей при регистрации если сайт на js? я сколько читаю так и не пойму как то эта тема не раскрыта нигде, по старинке помню что через php но и щас так же все?
     
  7. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Смотрите:

    Делать сервер на Node ИЛИ на PHP - это не принципиально - делайте как вам привычнее.

    То есть, эти два варианта - равноценны (если не вдаваться в нюансы многопоточности и асинхронности).

    Если вам привычнее на PHP - так и делайте - схема будет такая же, как я написал выше.

    Если есть конкретные вопросы - задавайте :)
    --- Добавлено ---
    это вам в помощь)))

    [​IMG]

    То есть рассматривайте веб-сервер - как прокладку между клиентом и БД, хотя это и неправильно))) но в вашем случае так будет удобнее для понимания))
     
  8. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    да картинка понятна, я понять не могу вот веб сервер стоит, на нем пхп и нода, через html->php-> sql я могу обратится, а html->js->node->sql немогу или как это реализовать на боле менее примере не могу понять, какие ссылки мне кто скидывал или гугл там еще какието апи и пр. все на английском я ниче понять не могу.

    в гугле есть маны но только отдельно как из ноды в скул запросы слать это я понял. гайдов много хоть они и разнятся и хрен знает от чего зависят. ну это ладно. а вот примера связки html->js->node->sql я ни одного не нашел. сколько не гуглил, с людми сколь не общался ну в общих фразах говорят или ссылки на непонятные дополнения дают неужели это так все сложно?

    ну я заплачу пару сотен рублей за рабочий пример связки html->js->node->sql. простейщий с одним запросом дальше сам разберусь. уже пару дней инфу собираю как будто я первый день за компютер сел и ничего не понимаю. вот просто по js ТОННЫ манов, а как с БД работать хрен.

    node чем привлекла в отличии от обычного php это что он на js похож шибко, и как то все проще выглядит чем опять вникать в пхп и строить мосты между js и php и строить страшные коды как по мне.
    У меня один сайт есть js php sql (не я делал) что то там поправить это ужас че) хочется чтоб на одном языке все было
     
  9. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Понимаю :)

    Два совета:

    1. Разбей процесс на две части:

    - Как обращаться к серверу из клиента через js (прогугли axios - оно тебе пригодится :)
    - Как на Node работать с MySQL.

    так у тебя не будет каши в голове.

    2. Часто такие мануалы пишут для связки не Js+Node+MySQL а Js+Node+MongoDB - возможно найдешь хороший учебник, а потом когда поймешь принцип - сможешь перенести на MySQL

    А вообще, да, тема не самая простая :)
     
  10. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @noice я могу объяснить с примером, напишеш в личку, но не сегодня.
     
  11. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Вот кстати еще один плевок в сторону Хабра - там стали активно минусить маны для начинающих.

    А это да как раз тот случай когда нужен просто развернутый пример кода
     
  12. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @noice ты вроде меня в черный список добавил написать в личку не могу. Вот смотри по шагам.
    шаг 1. скачиваем и устанавливаем node js
    https://nodejs.org/en/download/

    шаг 2. окрываем консоль проверяем установился ли node js и npm.
    Пишем в консоле node --version.
    ответ у меня : v10.16.3
    Пишем в консоле npm -v
    ответ у меня : 6.9.0
    Итак убедились что все установилось.

    шаг 3. создадим папку для проекта. Я создам на диске D назову папку node.
    Внутри этой папки создам фаил index.js с содержимым:
    Код (Javascript):
    1. console.log('node js start');
    Далее внутри этой папки выполню команду node index.jsчтобы перейти в эту папку у меня это команда в консоле cd D:\node Вместе с выводом команда выглдит так
    Код (Text):
    1. D:\node> node index.js
    2. node js start
    то есть путь сома команда, ниже вывод команды.

    шаг 4. нам нужно задействовать команду npm init в директории где лежит index.js
    после этой команды жмем несколько раз кнопку ентер
    будет примерно такое
    Код (Text):
    1. PS D:\node> npm init
    2. This utility will walk you through creating a package.json file.
    3. It only covers the most common items, and tries to guess sensible defaults.
    4.  
    5. See `npm help json` for definitive documentation on these fields
    6. and exactly what they do.
    7.  
    8. Use `npm install <pkg>` afterwards to install a package and
    9. save it as a dependency in the package.json file.
    10.  
    11. Press ^C at any time to quit.
    12. package name: (node)
    13. version: (1.0.0)
    14. description:
    15. entry point: (index.js)
    16. test command:
    17. git repository:
    18. keywords:
    19. author:
    20. license: (ISC)
    автоматически создатся фаил package.json
    Код (Javascript):
    1. {
    2.   "name": "node",
    3.   "version": "1.0.0",
    4.   "description": "",
    5.   "main": "index.js",
    6.   "scripts": {
    7.     "test": "echo \"Error: no test specified\" && exit 1"
    8.   },
    9.   "author": "",
    10.   "license": "ISC"
    11. }
    шаг 5. подключим библиотеку для работы с mysql
    введем в консоле где наш проект npm install --save mysql2
    и подключим его в нашем файле index.js

    Код (Javascript):
    1. const mysql = require("mysql2");
    2.  
    3. const connection = mysql.createConnection({
    4.   host: "localhost",
    5.   user: "root",
    6.   database: "usersdb",
    7.   password: "пароль_от_сервера"
    8. });
    9.  
    10. connection.connect(function(err){
    11.     if (err) {
    12.       return console.error("Ошибка: " + err.message);
    13.     }
    14.     else{
    15.       console.log("Подключение к серверу MySQL успешно установлено");
    16.     }
    17. });
    Ну дальше думаю сами разберетесь =) как то так, вот документация https://www.npmjs.com/package/mysql2
     
    noice нравится это.
  13. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    нет я на форумах вобще в жизни никого в чс не добовлял.
    Спасибо за расписанный ответ вче четко.
    Только меня опять не поняли) я незнаю почему но никто не понимает. Запрос то я понял как делать в ноде, даже hello sql в базу в начить умею.
    Вопрос то меня интересует использования связки Сайта который данные записывает в mysql данные через ноду.

    То есть к примеру:

    HTML:
    1. <input type="text" id="input1" onchange=func1()>
    Код (Javascript):
    1. function func1() {
    2.     let txt = document.getElementById('input1').value; //берем текст из инпута
    3.     console.log('отправляем текст в базу sql');
    4.     // тут какой то код который записывает txt в базу mysql
    5.     // отпрвляет данные в node.js var post  = {id: 1, title: txt};
    6.     }
    node.js

    Код (Javascript):
    1. console.log('start..');
    2. let mysql = require('mysql');
    3. console.log('Get connection ...');
    4. let conn = mysql.createConnection({ // ПОДКЛЮЧЕНИЕ К SQL
    5.   database: 'test',
    6.   host: "localhost",
    7.   user: "",
    8.   password: ""
    9. });
    10. conn.connect(function(err) {
    11.   if (err) throw err;
    12.   console.log("Connected!");
    13. });
    14.  
    15.     addsql = function () { // ФУНКЦИЯ ОТПРАВКИ ЗАПРОСА SQL
    16.     var post  = {id: 1, title: 'Hello MySQL'};                     //ТУТ ТЕКСТ ДЛЯ ПРИМЕРА В ДВЕ КОЛОТКИ ДЛЯ ЗАПИСИ В SQL
    17.     var query = conn.query('INSERT INTO posts SET ?', post, function(err, result) {
    18.       console.log(err);
    19.       console.log(result);
    20.     });
    21.     console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'
    22.    
    23. }
    24. addsql();
    25. conn.end();
    то есть вопрос не в то как работают запросы нода, а как они работают в связке сайт js+node