немного начал изучать js и столкнулся с проблемкой, все пишут что js работает с sql через node. поставил эту ноду и там забпросы к бд чтоб запустить надо в консоли запускать типа node connect.js а как запросы из сайта на js посылать через эту ноду непонятно. Неужели выход только через php? Или как это делается? js + node + mysql без php. может есть у кого ссылка на скрипт пример
Node - это javascript (со своими особенностями) выполняющийся на сервере А то, что вы называете "js" - это javascript выполняющийся на клиенте (в браузере, например) То есть: javascript - И там, И там, НО в разных местах, и на разных компьютерах Схема такая: 1. Скрипт на клиенте (напр. в браузере) генерирует запрос с веб-серверу, скажем, при помощи библиотеки Axios или еще как-то. 2. Веб-сервер (под управлением Node) принимает этот запрос, и, при необходимости формирует запрос к серверу баз данных (MySQL) 3. Сервер баз данных, обрабатывает запрос, и посылает ответ с данными веб-серверу. 4. Веб-сервер (под Node.js) получает ответ от сервера баз данных (MySQL), обрабатывает его, и формирует ответ клиенту (браузеру). 5. Клиент (браузер) получает ответ от сервера, форматирует его, и выводит пользователю на экран. 6. PROFIT!!! И да, PHP при таком раскладе совершенно не нужен. Собственно, в этом и есть главная фишка Node (если не рассматривать асинхронность) - не нужно учить другой язык, если уже знаешь JavaScript.
Немного стал изучать js и параллельно node.js это не совместимые вещи. Убьёте очень много времени на изучение node js не зная досконально самой js. Какую задачу вы сейчас пытаетесь решить? Я вам просто покажу пример без node, но с использованием js. Вообще обычно если для работы с mysql вам понадобился js это значит что вам нужно динамически обновить данные на странице. Для этого есть ajax запросы. Минимально размер кода у библиотеки jquery, в js особо вникать не придется. Вот простой пример вам. Есть фаил php, назовем его test.php PHP: <?php echo 'Я фаил test.php'; И допустим вам надо вытянуть данные с этого файла но без перезагрузки страницы. Для этого у jquery есть функция $.get https://api.jquery.com/jquery.get/ Для нашего файла запрос будет таким: Код (Javascript): $.get( "test.php", function( data ) { }); Переменная data будет содержать такую строку 'Я фаил test.php' ; Например, мы хотим вставить эту строку на страницу, в какой нибудь блок с id dom_trest. Код будет таким Код (Javascript): $('#dom_test').html(data); И полный код будет таким HTML: <!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Hello, world!</title> </head> <body> <div id="dom_test">Сюда вставим данные из test.php</div> <button id="start">Обновление из test.php</button> <script src="https://code.jquery.com/jquery-3.4.1.min.js" ></script> <script> $('#start').click(function() { //нажатие на кнопку Обновление из test.php $.get( "test.php", function( data ) { $('#dom_test').html(data); }); }); </script> </body> </html> Так же можно передать данные в этот фаил, это уже сами разберетесь https://api.jquery.com/jQuery.post/
А если все же хочется изучать чистый js, то тот же функционал будет выглядеть так: Код (Javascript): function getAjax(url, success) { var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); xhr.open('GET', url); xhr.onreadystatechange = function() { if (xhr.readyState>3 && xhr.status==200) {success(xhr.responseText);} if (xhr.status==500) { console.log(xhr.responseText); } }; xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.send(); return xhr; } let dom_test = document.getElementById('dom_test'), start = document.getElementById('start'); start.onclick = function() { getAjax('test.php', function(data){ dom_test.innerHTML = data; }); }
С файлом такое может и прокатит (могут быть нюансы с CORS), а вот с MySQL без ноды по-любому никак И собственно, основные сложности там как раз не с CRUD как таковым будут, больше всего головняков с аутентификацией/авторизацией. Хотя если просто читать из БД через открытое API - тогда это проще конечно.
спасибо за ответы, но да надо именно доступ к sql. Задача к примеру такая записать в sql данные пользователей при регистрации. как решается задача записи данных пользователей при регистрации если сайт на js? я сколько читаю так и не пойму как то эта тема не раскрыта нигде, по старинке помню что через php но и щас так же все?
Смотрите: Делать сервер на Node ИЛИ на PHP - это не принципиально - делайте как вам привычнее. То есть, эти два варианта - равноценны (если не вдаваться в нюансы многопоточности и асинхронности). Если вам привычнее на PHP - так и делайте - схема будет такая же, как я написал выше. Если есть конкретные вопросы - задавайте --- Добавлено --- это вам в помощь))) То есть рассматривайте веб-сервер - как прокладку между клиентом и БД, хотя это и неправильно))) но в вашем случае так будет удобнее для понимания))
да картинка понятна, я понять не могу вот веб сервер стоит, на нем пхп и нода, через html->php-> sql я могу обратится, а html->js->node->sql немогу или как это реализовать на боле менее примере не могу понять, какие ссылки мне кто скидывал или гугл там еще какието апи и пр. все на английском я ниче понять не могу. в гугле есть маны но только отдельно как из ноды в скул запросы слать это я понял. гайдов много хоть они и разнятся и хрен знает от чего зависят. ну это ладно. а вот примера связки html->js->node->sql я ни одного не нашел. сколько не гуглил, с людми сколь не общался ну в общих фразах говорят или ссылки на непонятные дополнения дают неужели это так все сложно? ну я заплачу пару сотен рублей за рабочий пример связки html->js->node->sql. простейщий с одним запросом дальше сам разберусь. уже пару дней инфу собираю как будто я первый день за компютер сел и ничего не понимаю. вот просто по js ТОННЫ манов, а как с БД работать хрен. node чем привлекла в отличии от обычного php это что он на js похож шибко, и как то все проще выглядит чем опять вникать в пхп и строить мосты между js и php и строить страшные коды как по мне. У меня один сайт есть js php sql (не я делал) что то там поправить это ужас че) хочется чтоб на одном языке все было
Понимаю Два совета: 1. Разбей процесс на две части: - Как обращаться к серверу из клиента через js (прогугли axios - оно тебе пригодится - Как на Node работать с MySQL. так у тебя не будет каши в голове. 2. Часто такие мануалы пишут для связки не Js+Node+MySQL а Js+Node+MongoDB - возможно найдешь хороший учебник, а потом когда поймешь принцип - сможешь перенести на MySQL А вообще, да, тема не самая простая
Вот кстати еще один плевок в сторону Хабра - там стали активно минусить маны для начинающих. А это да как раз тот случай когда нужен просто развернутый пример кода
@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): console.log('node js start'); Далее внутри этой папки выполню команду node index.jsчтобы перейти в эту папку у меня это команда в консоле cd D:\node Вместе с выводом команда выглдит так Код (Text): D:\node> node index.js node js start то есть путь сома команда, ниже вывод команды. шаг 4. нам нужно задействовать команду npm init в директории где лежит index.js после этой команды жмем несколько раз кнопку ентер будет примерно такое Код (Text): PS D:\node> npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (node) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) автоматически создатся фаил package.json Код (Javascript): { "name": "node", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } шаг 5. подключим библиотеку для работы с mysql введем в консоле где наш проект npm install --save mysql2 и подключим его в нашем файле index.js Код (Javascript): const mysql = require("mysql2"); const connection = mysql.createConnection({ host: "localhost", user: "root", database: "usersdb", password: "пароль_от_сервера" }); connection.connect(function(err){ if (err) { return console.error("Ошибка: " + err.message); } else{ console.log("Подключение к серверу MySQL успешно установлено"); } }); Ну дальше думаю сами разберетесь =) как то так, вот документация https://www.npmjs.com/package/mysql2
нет я на форумах вобще в жизни никого в чс не добовлял. Спасибо за расписанный ответ вче четко. Только меня опять не поняли) я незнаю почему но никто не понимает. Запрос то я понял как делать в ноде, даже hello sql в базу в начить умею. Вопрос то меня интересует использования связки Сайта который данные записывает в mysql данные через ноду. То есть к примеру: HTML: <input type="text" id="input1" onchange=func1()> Код (Javascript): function func1() { let txt = document.getElementById('input1').value; //берем текст из инпута console.log('отправляем текст в базу sql'); // тут какой то код который записывает txt в базу mysql // отпрвляет данные в node.js var post = {id: 1, title: txt}; } node.js Код (Javascript): console.log('start..'); let mysql = require('mysql'); console.log('Get connection ...'); let conn = mysql.createConnection({ // ПОДКЛЮЧЕНИЕ К SQL database: 'test', host: "localhost", user: "", password: "" }); conn.connect(function(err) { if (err) throw err; console.log("Connected!"); }); addsql = function () { // ФУНКЦИЯ ОТПРАВКИ ЗАПРОСА SQL var post = {id: 1, title: 'Hello MySQL'}; //ТУТ ТЕКСТ ДЛЯ ПРИМЕРА В ДВЕ КОЛОТКИ ДЛЯ ЗАПИСИ В SQL var query = conn.query('INSERT INTO posts SET ?', post, function(err, result) { console.log(err); console.log(result); }); console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL' } addsql(); conn.end(); то есть вопрос не в то как работают запросы нода, а как они работают в связке сайт js+node