Nodejs, sql и сайт: управление электроникой через интернет

Работаем с SQL Server в Node.js (с использованием SQL запросов)

Перейти к содержимому

Node.Js поддерживает работу со всеми популярными системами управления базами данных. Microsoft SQL Server не исключение.

В репозитории npm существует целый ряд пакетов, которые позволяют работать с этой СУБД. Однако все их можно условно разделить на две большие группы в зависимости от реализуемого подхода.

  • Непосредственная работа с базой данных c использованием SQL запросов;
  • Сопоставление объектной модели и структуры базы данных посредство ORM.

В данной статье речь пойдёт о первом подходе.

Установка клиента для SQL Server

Для того чтобы выполнить запрос к базе данных SQL Server в Node.js существует целый ряд библиотек. Мы воспользуемся библиотекой @frangiskos/mssql, которая основана на node-mssql и предоставляет достаточно простой интерфейс для работы.

Библиотека имеет открытый исходный код, который доступен на GitHub (https://github.com/frangiskos/mssql).

Установить её можно при помощи npm следующей командой:

npm install @frangiskos/mssql

Подключение к базе данных

Чтобы подключиться к базе данных необходимо подключить библиотеку к проекту и создать объект SqlConfig, в котором описаны параметры подключения.

Ниже приведён пример указанных операций:

import { SqlConfig, sql } from '@frangiskos/mssql';const sqlConfig: SqlConfig = {    server: 'host\SQLS_Instance',

Далее нужно передать объект SqlConfig в метод init объекта sql.

Библиотека @frangiskos/mssql работает с SQL Server по протоколу TCP. Поэтому предварительно убедитесь, что для экземпляра SQL Server, к которому вы планируете подключиться включен протокол TCP и открыты соответствующие порты.

Если подключение завершено успешно, можно выполнять запросы к базе данных при помощи метода query, но о нём позже.

Так как метод init ничего не возвращает, обработать ошибку подключения можно только при помощи блока try-catch.

Запрос на выборку

Запрос на выборку данных выполняется при помощи метода query/ Этот метод обычно принимает как минимум один параметр – строку с текстом запроса. Остальное — параметры запроса (о них мы поговорим позже).

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

sql.query('SELECT * FROM TestTable').then(data => console.log(data)).catch(error => console.error(error));

Метод query возвращает Promise. Поэтому данные мы можем получить только в методе then или при помощи async/await.

    const data = await sql.query('SELECT * FROM TestTable').;

Записи из таблицы возвращаются в виде JSON массива, где каждый элемент представляет собой JSON объект с полями соответствующими структуре таблицы.

Например, для таблицы, которая включает поля id (целое число) и testValue (nvarchar), массив с результатами будет выглядеть приблизительно так:

[{ id: 1, testValue: 'Test 1' },{ id: 2, testValue: 'Test 2' },{ id: 3, testValue: 'Test 3' },{ id: 4, testValue: 'Test 4' },{ id: 5, testValue: 'Test 5' }]

Запрос без выборки данных

Если запрос не предполагает получения данных из базы (UPDATE, INSERT, CREATE и т. д.), он выполняется аналогичным образом. Единственное отличие состоит только в том, что в этом случае нет необходимости обрабатывать возвращаемые данные в приложении. Поэтому, метод then можно использовать только для контроля успешного выполнения запроса.

Ниже показан пример запроса на выполнение хранимой процедуры:

let testValue = 'Test 5';sql.query(`EXEC AddTestValue @testValue=N'${testValue}'`).then(() => {}).catch(error => console.error(error));

Как мы видим при помощи библиотеки @frangiskos/mssql можно спокойно работать с SQL Server используя синтаксис Transact-SQL.

В приведённом примере есть один очень серьёзный подвох.

Значение входного параметра хранимой процедуры передаётся непосредственно в строке запроса, что чревато далеко идущими последствиями. Поэтому настоятельно рекомендуется в подобных случаях применять запросы с параметрами (параметрические запросы), речь о которых пойдёт ниже.

Параметрический запрос

Библиотека @frangiskos/mssql поддерживает параметрические запросы.

Для этой цели предусмотрен специальный синтаксис.

Параметры в тексте запроса обозначаются как @P и далее номер параметра (обязательно), начиная с 1.

Обратите внимание, что подобные имена параметров являются заерезервированными.

Значения параметров запроса передаются как параметры метода query (начиная со второго параметра, первый всегда строка запроса).

Далее представлен предыдущий пример, который был изменён для использования параметрического запроса.

sql.query(`EXEC AddTestValue @testValue=@P1`,testValue).catch(error => console.error(error));

Метод query, ранее принимавший только один параметр, теперь принимает два. Строку запроса и значение параметра.

Количество используемых параметров не ограничено.

Сопоставление параметров запроса их значениям осуществляется слева направо. То есть, второй параметр метода query — @P1, третий — @P2, четвёртый — @P3 и т. д.

Например, такой запрос к рассмотренной ранее тестовой таблице вернёт не все пять значений, а только два.

sql.query('SELECT * FROM TestTable WHERE id >= @P1 AND id < @P2',2,4).then(data => console.log(data)).catch(error => console.error(error));

Результат будет уже таким:

[{ id: 2, testValue: 'Test 2' },{ id: 3, testValue: 'Test 3' }]

Специализированные методы

В принципе, изложенное выше, это всё, что необходимо знать для успешной работы с SQL Server в Node.js при помощи @frangiskos/mssql. Но, возможности библиотеки этим не ограничиваются.

Есть ещё два метода, которые вызываются аналогично query, но предназначены для частных случаев и потому используются значительно реже. Однако эти методы могут существенно упростить вам работу.

Первый из них queryOne — полный аналог query, но возвращает только первую из выбранных записей. Этот метод избавляет от необходимости использовать «TOP 1» в SQL запросах.

Второй insertReturnIdentity, предназначен для выполнения вставки данных в таблицу с возвратом идентификатора добавленной записи в случае успеха. Этот метод возвращает Promise. Поэтому, значение идентификатора доступно только в методе then или с использованием async/await.

sql.insertReturnIdentity('INSERT INTO TestTable VALUES ('Test6')').then(id => console.log(id)).catch(error => console.error(error));

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

Также стоит обратить внимание на методы q, q1 и ii.

Эти методы по сути являются псевдонимами для query, queryOne и insertReturnIdentity соответственно. Они позволяют сократить объём кода за счёт краткости. Но, стоит ли приносить качество кода в жертву подобной «оптимизации» уже решать вам.

На этом, мы завершаем рассмотрение библиотеки @frangiskos/mssql.

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

Источник: http://streletzcoder.ru/rabotaem-s-sql-server-v-node-js-s-ispolzovaniem-sql-zaprosov/

Создание простого блога на Node.js

В этой статье мы покажем вам, как создать простой блог с помощью Node.js и Cosmic JS. Давайте начнем.

Прим. перев. Также вы можете посмотреть наш материал по созданию простого мессенджера с использованием Node.js.

Начало

Убедитесь, что у вас установлена платформа для разработки Node.js, если нет, то посетите веб-сайт Node.js, чтобы скачать последнюю версию.

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

npm install yarn -g

Потом создайте папку для блога. Выполните в терминале следующие команды:

mkdir simple-blog
cd simple-blog

На следующем этапе создайте файл package.json, чтобы импортировать все зависимости для блога и добавьте в него следующие строки:

{ “dependencies”: { “cosmicjs”: “^2.39.0”, “express”: “^4.15.2”, “hogan-express”: “^0.5.2”, “nodemon”: “^1.11.0” }, “scripts”: { “start”: “node app.js”, “development”: “nodemon app.js” }
}

В этом файле объявлены зависимости, которые необходимо установить для разработки и запуска блога:

  1.  Модуль Cosmic JS Node, чтобы получать данные с Cosmic JS Bucket.
  2.  Веб-фреймворк Express.
  3.  ПакетHogan для обработки шаблонов.
  4.  МодульNodemon для удобства разработки — он автоматически перезагружает приложение, когда в нем произошли изменения.

Выполните следующую команду, чтобы установить зависимости:

yarn

Разработка блога

Далее нужно сформировать главную страницу блога. Создайте файл под названием app.js и добавьте в него следующие строки:

const express = require('express')
const app = express()
const hogan = require('hogan-express')
const http_module = require('http')
const http = http_module.Server(app)
app.engine('html', hogan)
app.set('port', (process.env.PORT || 3000))
app.use('/', express.static(__dirname + '/public/'))
const Cosmic = require('cosmicjs')
const helpers = require('./helpers')
const bucket_slug = process.env.COSMIC_BUCKET || 'simple-blog-website'
const read_key = process.env.COSMIC_READ_KEY
const partials = { header: 'partials/header', footer: 'partials/footer'
}
app.use('/', (req, res, next) => { res.locals.year = new Date().getFullYear() next()
})
// Home
app.get('/', (req, res) => { Cosmic.getObjects({ bucket: { slug: bucket_slug, read_key: read_key } }, (err, response) => { const cosmic = response if (cosmic.objects.type.posts) { cosmic.objects.type.posts.forEach(post => { const friendly_date = helpers.friendlyDate(new Date(post.created_at)) post.friendly_date = friendly_date.month + ' ' + friendly_date.date }) } else { cosmic.no_posts = true } res.locals.cosmic = cosmic res.render('index.html', { partials }) })
})
http.listen(app.get('port'), () => { console.info('==> Go to http://localhost:%s', app.get('port'));
})

Поясним, что происходит здесь:

  1. Производится импорт модулей Express, Cosmic JS и т.д.
  2. Присоединяются верхний и нижний колонтитулы.
  3. При запросе («/») происходит вызов Cosmic JS Bucket для вывода постов и возвращается шаблон index.html.
  4. Добавляются данные на страницу в виде глобального хранилища данных — cosmic. Эта структура данных делает вашу реализацию шаблона  интуитивной.

Добавление переменных шаблона домашней страницы

Эта часть процесса является наиболее интересной, потому что она показывает мощь Cosmic JS в сочетании с системой шаблонов Mustache.

Создайте папку под названием views:

mkdir views
cd views

Создайте файл index.html в этой папке и добавьте в него следующие строки:

{{> header }} {{# cosmic.objects.type.posts }} {{# metadata.hero.imgix_url }} {{/ metadata.hero.imgix_url }}

{{ title }}

by {{ metadata.author.title }} on {{ friendly_date }} {{{ metadata.teaser }}} Read more… {{/ cosmic.objects.type.posts }}
{{> footer }}

Что здесь происходит:
1.

Формируется заголовок (header) с переменными Mustache.
2. Извлекаются данные Cosmic с помощью переменной Mustache {{cosmic}}, которая имеет все необходимое для компоновки динамических данных нашей страницы.
3.

Проход по {{}}cosmic.objects.type.posts и вывод постов в блоге.

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

Заключение

Эта сокращенная версия блога доступна для загрузки на странице Cosmic JS Apps. Полная версия блога включает в себя страницу со всеми постами, а также страницу с постами каждого автора. Просмотрите полную версию кода на GitHub и разверните блог с помощью нескольких кликов на панели инструментов Cosmic JS, установив блог в Cosmic JS Bucket.

Перевод статьи «How to Build a Simple Blog Using Node.js»

Источник: https://tproger.ru/translations/simple-blog-node-js/

Руководство по Node.js для API SQL в Azure Cosmos DB

  • 09/24/2018
  • Время чтения: 25 мин
  • Соавторы

Как у разработчика у вас могут быть приложения, использующие данные документов NoSQL.As a developer, you might have applications that use NoSQL document data.

Вы можете использовать учетную запись API SQL в Azure Cosmos DB для хранения этих данных документов и получения доступа к ним.You can use a SQL API account in Azure Cosmos DB to store and access this document data. В этом руководстве показано, как создать консольное приложение Node.js, которое создает ресурсы Azure Cosmos DB, и запросить эти ресурсы.

This tutorial shows you how to build a Node.js console application to create Azure Cosmos DB resources and query them.

Читайте также:  Цифровой температурный датчик на основе arduino - arduino+

Изучив данный учебник, вы научитесь:In this tutorial, you will:

  • создавать учетную запись Azure Cosmos DB и подключаться к ней;Create and connect to an Azure Cosmos DB account.
  • настраивать свое приложение;Set up your application.
  • создавать базу данных;Create a database.
  • Создайте контейнер.Create a container.
  • добавлять элементы в контейнер;Add items to the container.
  • выполнять операции CRUD с элементами, контейнером и базой данных.Perform basic operations on the items, container, and database.

Предварительные требованияPrerequisites

Убедитесь, что у вас есть указанные ниже ресурсы.Make sure you have the following resources:

Создание учетной записи Azure Cosmos DBCreate Azure Cosmos DB account

Давайте создадим учетную запись Azure Cosmos DB.Let's create an Azure Cosmos DB account. Если у вас уже есть учетная запись, которую вы собираетесь использовать, можно перейти к шагу Настройка приложения Node.js.If you already have an account you want to use, you can skip ahead to Set up your Node.js application.

Если вы используете эмулятор Azure Cosmos DB, выполните действия, описанные в статье об эмуляторе Azure Cosmos DB, чтобы настроить эмулятор и сразу перейти к настройке приложения Node.js.If you are using the Azure Cosmos DB Emulator, follow the steps at Azure Cosmos DB Emulator to set up the emulator and skip ahead to Set up your Node.

js application.

  1. В новом окне браузера войдите на портал Azure.In a new browser window, sign in to the Azure portal.
  2. Последовательно выберите Создать ресурс > Базы данных > Azure Cosmos DB.Select Create a resource > Databases > Azure Cosmos DB.

  3. На странице создания учетной записи Azure Cosmos DB введите основные параметры для новой учетной записи Azure Cosmos DB.On the Create Azure Cosmos DB Account page, enter the basic settings for the new Azure Cosmos DB account.

    ПараметрSettingЗначениеValueОПИСАНИЕDescription
    ПодпискаSubscription Ваша подпискаYour subscription Вы подписку Azure, которую нужно использовать для этой учетной записи Azure Cosmos DB.Select the Azure subscription that you want to use for this Azure Cosmos DB account.
    Группа ресурсовResource Group СозданиеCreate newВведите уникальное имя, указанное в идентификаторе.Then enter the same unique name as provided in ID Выберите Создать.Select Create new. Затем введите новое имя группы ресурсов для учетной записи.Then enter a new resource-group name for your account. Для удобства используйте то же имя, которое присвоено идентификатору.For simplicity, use the same name as your ID.
    Имя учетной записиAccount Name Введите уникальное имя.Enter a unique name Введите уникальное имя для идентификации вашей учетной записи Azure Cosmos DB.Enter a unique name to identify your Azure Cosmos DB account. Так как элемент documents.azure.com добавляется к указанному вами идентификатору для создания URI, используйте уникальный идентификатор.Because documents.azure.com is appended to the ID that you provide to create your URI, use a unique ID.Идентификатор может содержать только строчные буквы, цифры и знак дефиса (-).The ID can only contain lowercase letters, numbers, and the hyphen (-) character. Его длина должна составлять от 3 до 31 символа.It must be between 3 and 31 characters in length.
    APIAPI Core(SQL)Core(SQL) API определяет тип учетной записи, которую нужно создать.The API determines the type of account to create. Azure Cosmos DB предоставляет пять API: API Core(SQL) для баз данных документов, API Gremlin для графовых баз данных, API MongoDB для баз данных документов, API таблиц Azure и API Cassandra.Azure Cosmos DB provides five APIs: Core(SQL) for document databases, Gremlin for graph databases, MongoDB for document databases, Azure Table, and Cassandra. Сейчас для каждого API требуется создавать отдельную учетную запись.Currently, you must create a separate account for each API.Выберите Core(SQL), так как в рамках этой статьи вы создадите базу данных документов и отправите запрос к ней с использованием синтаксиса SQL.Select Core(SQL) because in .postlight.com”>

    Источник: https://docs.microsoft.com/ru-ru/azure/cosmos-db/sql-api-nodejs-get-started

    5. Аутентификация, сессии и контроль доступа в Express¶

    Добро пожаловать в пятую часть руководства по созданию веб-приложения с помощью Node.js. В рамках серии уроков будет рассказано про основные особенности и трудности, которые возникают при работе с Node.js.

    Предыдущие части:

    Мы уже сделали достаточно полезное приложение. Но оно было бы еще более полезным, если бы имело какое-либо подобие системы аутентификации. Даже не смотря на то, что в миру набирают обороты такие технологии, как OpenID и OAuth, большинство коммерческих проектов предпочитают иметь свою собственную систему входа.

    Обычно она реализуется с помощью сессий:

    • Пользователь заполняет форму, указывая логин и пароль
    • Пароль шифруется с помощью хэш-алгоритма
    • Полученное значение сравнивается с тем, что хранится в БД
    • Если они совпадают, то генерируется сессионный ключ, идентифицирующий пользователя

    Для реализации пользовательских сессий нам нужно следующее:

    • Пользователь в БД
    • Сессии, в которых можно хранить идентификатор пользователя
    • Шифрование пароля
    • Возможность ограничения доступа к тем URL, для которых требуется залогиненный пользователь

    В основе сессий в Express лежит соответствующий средний слой (middleware) из Connect, который, в свою очередь, опирается на механизм хранения данных.

    Существует хранилище в памяти, а так же сторонние хранилища, включая connect-redis и connect-mongodb.

    В качестве альтернативы так же можно рассматривать cookie-sessions, который хранит данные сессии в пользовательской куке (cookie).

    Поддержка сессий может быть включена следующим образом:

    app.use(express.cookieDecoder());
    app.use(express.session());

    Размещение этого кода в разделе конфигурации приложения очень важно. В случае ошибки сессионная переменная не появится в объекте запроса. Я разместил этот кусок между bodyDecoder и methodOverride. Полную версию кода вы можете посмотреть на GitHub.

    Теперь в HTTP-обработчиках будет доступна переменная req.session:

    app.get('/item', function(req, res) { req.session.message = 'Hello World';
    });

    Для поддержки сессий в MongoDB необходимо установить connect-mongodb:

    npm install connect-mongodb

    Работает connect-mongodb так же как и любое другое хранилище сессий. Во время настройки приложения необходимо указать детали соединения:

    app.configure('development', function() { app.set('db-uri', 'mongodb://localhost/nodepad-development');
    }); var db = mongoose.connect(app.set('db-uri')); function mongoStoreConnectionArgs() { return { dbname: db.db.databaseName, host: db.db.serverConfig.host, port: db.db.serverConfig.port, username: db.uri.username, password: db.uri.password };
    } app.use(express.session({ store: mongoStore(mongoStoreConnectionArgs())
    }));

    Большая часть этого кода не понадобилась бы, если бы авторы API реализовали стандартный формат настроек соединения. Я написал функцию, извлекающую настройки соединения из Mongoose.

    В этом примере, переменная db хранит экземпляр соединения Mongoose, который ждет настроек соединения в виде URI. Этот формат, кстати, мне более всего симпатичен из-за своей простоты и легкости для запоминания.

    Строку соединения я сохраняю с помощью app.set.

    При работе с Express бывает полезно использовать app.set('name', 'value'). Так же следует запомнить, что для доступа к настройке следует использовать app.set('name'), а не app.get.

    Теперь, запустив в консоли Mongo db.sessions.find(), можно увидеть все созданные сессии.

    Express предоставляет элегатный способ по ограничению доступа для залогиненных пользователей. При определения HTTP-обработчика может быть задан необязательный параметр маршрутизации:

    function loadUser(req, res, next) { if (req.session.user_id) { User.findById(req.session.user_id, function(user) { if (user) { req.currentUser = user; next(); } else { res.redirect('/sessions/new'); } }); } else { res.redirect('/sessions/new'); }
    } app.get('/documents.:format?', loadUser, function(req, res) { // …
    });

    Теперь доступ к адресу (URL), требующему только авторизованных пользователей, может быть ограничен простым добавлением loadUser в соответствующий HTTP-обработчик. Вспомогательная функция принимает те же параметры, что и обычный обработчик, плюс один дополнительный параметр next.

    Последний позволяет использовать дополнительную логику перед непосредственным вызовом функции обработчика адреса. В нашем проекте, пользователь загружается, используя сессионую переменную user_id.

    Если пользователь не найден, то функция next не вызывается и происход переадресация на окно ввода логина/пароля.

    Я сделал сессии таким же образом, как и документы. Добавил адреса для создания, удаления и получения сессий:

    // Сессии
    app.get('/sessions/new', function(req, res) { res.render('sessions/new.jade', { locals: { user: new User() } });
    }); app.post('/sessions', function(req, res) { // Найти пользователя и выставить currentUser
    }); app.del('/sessions', loadUser, function(req, res) { // Удалить сессию if (req.session) { req.session.destroy(function() {}); } res.redirect('/sessions/new');
    });

    Модель пользователя User немного сложнее, чем модель документа Document, так как в ней будет содержаться код связанный с авторизацией. Я использовал следующую стратегию, которую, вероятно, вы уже видели ранее в объектно-ориентированных веб фреймворках:

    • Пароли хранятся в виде хэша
    • Аутентификация выполняется сравнением зашифрованного текста, указанного пользователем, и паролем-хэшем, хранящимся в БД для пользователя
    • Виртуальное свойство password хранит пароль в текстовом виде для удобства в формах регистрации и входа
    • У свойства есть сеттер, который автоматически конвертирует текст пароля в хэш перед сохранением
    • Используется уникальный индекс для поля email, чтобы гарантировать, что у каждого пользователя свой собственный email

    Шифрование пароля использует стандартную Node.js библиотеку crypto:

    var crypto = require('crypto'); mongoose.model('User', { methods: { encryptPassword: function(password) { return crypto.createHmac('sha1', this.salt). update(password). digest('hex'); } }
    });

    encryptPassword – метод экземпляра, возвращающий sha1-хэш для текстового пароля и некоторой соли. Соль генерируется перед шифрованием в сеттере пароля:

    mongoose.model('User', { // … setters: { password: function(password) { this._password = password; this.salt = this.makeSalt(); this.hashed_password = this.encryptPassword(password); } }, methods: { authenticate: function(plainText) { return this.encryptPassword(plainText) === this.hashed_password; }, makeSalt: function() { return Math.round((new Date().valueOf() * Math.random())) + ''; }, // …

    Солью может быть всё, что угодно. Я, в данном примере, генерирую случайную строку.

    Mongoose позволяет изменять поведение модели при сохранении с помощью переопределения метода save:

    mongoose.model('User', { // … methods: { // … save: function(okFn, failedFn) { if (this.isValid()) { this.__super__(okFn); } else { failedFn(); } } // …

    Я переопределил метод save, чтобы была возможность обработки неудачного сохранения модели. Это облегчит обработку ошибок при регистрации:

    app.post('/users.:format?', function(req, res) { var user = new User(req.body.user); function userSaved() { switch (req.params.format) { case 'json': res.send(user.__doc); break; default: req.session.user_id = user.id; res.redirect('/documents'); } } function userSaveFailed() { res.render('users/new.jade', { locals: { user: user } }); } user.save(userSaved, userSaveFailed);
    });

    Пока не выводится никаких сообщений об ошибках. Это будет добавлено в одной из следующих частей.

    Несмотря на всю простоту этой проверки, индекс критически важен для приложения:

    mongoose.model('User', { // … indexes: [ [{ email: 1 }, { unique: true }] ], // …
    });

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

    После коммита 03fe9b2 мы имеем следующее:

    • Сессии в MongoDB
    • Модель пользователя с поддержкой шифрования пароля алгоритмом sha-1
    • Контроль доступа к документам
    • Регистрацию и аутентифкацию пользователей
    • Управление сессиями

    Я немного обновил Jade шаблоны и добавил форму входа.

    Есть, однако, несколько моментов, пока не реализованных в текущей версии приложения:

    • Документы ничего не знают о своем владельце
    • Тесты работают неправильно, так как у меня появились проблемы при анализе того, как Expresso работает с сессиями

    Со всем этим мы разберемся в следующих частях руководства.

    Источник: https://nodeguide.ru/doc/dailyjs-nodepad/node-tutorial-5/

    Node.JS + MySQL

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

    Установка node-mysql

    Для установки воспользуемся git:

    cd ~/.node_libraries
    git clone git://github.com/felixge/node-mysql.git mysql

    После этого вы можете без проблем использовать данный модуль в вашей работе.

    Установка соединения

    Перед началом выполнения запросов к БД необходимо выполнить подключение к серверу MySQL. Рассмотрим как сделать это при помощи модуля node-mysql в node.js:

    var Client = require('mysql').Client,
    client = new Client();
    client.user = 'root';
    client.password = 'password';
    client.connect();
    client.end();

    Первые две строки отвечают за подключение модуля и создания объекта-клиента. Далее задаются параметры аутентификации и вызывается метод connect. После этого если вы корректно указали пару логин-пароль, то будет установлено соединение. Последняя строка соответственно завершает соединение с сервером.

    Отступление

    Для того что-бы наш MySQL клиент мог передать данные аутентификации необходимо чтобы node.js был скомпилирован с поддержкой ssl, иначе при попытке установления соединения он будет жутко ругатся из-за то что не сможет зашифровать пароль. Для корректной компиляции node.js с поддержкой ssl в Debian вам потребуется пакет libssl-dev

    Выполнение запросов

    Сначала создадим тестовую базу данных и таблицу в ней:

    CREATE DATABASE `test_nodejs` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    USE test_nodejs;
    CREATE TABLE `test_nodejs`.`test` (
    `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `some_text_data` VARCHAR( 255 ) NOT NULL ,
    `some_date` DATE NOT NULL
    ) ENGINE = MYISAM ;

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

    var Client = require('mysql').Client,
    client = new Client(); client.user = 'root'; // Устанавливаем логин
    client.password = 'password'; // Устанавливаем пароль
    client.connect(); // Устанавливаем соединение
    client.query('USE test_nodejs'); // Выполняем запрос на выбор БД
    // Запрос на вставку
    client.query('INSERT INTO test VALUES (NULL, 'Test', '03-28-2011')',function(){ // Запрос на выборку client.query('SELECT * FROM test', function(error, result, fields){ // Если возникла ошибка выбрасываем исключение if (error){ throw error; } // выводим результат console.log(fields); console.log(result); // Завершаем соединение client.end(); });
    });

    Для тех кто уже достаточно освоился в асинхронном программировании данный код не вызовет трудностей.

    Для выполнения запросов используется метод клиента query, который кроме самого запроса принимает callback-функцию с параметрами error (ошибка, если возникла), result (массив объектов результата запроса), fields (описание полей из множества полей результата). В результате выполнения вышеприведённого кода получим:

    node test.js { id: { length: 45, received: 45, number: 2, type: 4, catalog: 'def', db: 'test_nodejs', table: 'test', originalTable: 'test', name: 'id', originalName: 'id', charsetNumber: 63, fieldLength: 20, fieldType: 8, flags: 16899, decimals: 0 }, some_text_data: { length: 69, received: 69, number: 3, type: 4, catalog: 'def', db: 'test_nodejs', table: 'test', originalTable: 'test', name: 'some_text_data', originalName: 'some_text_data', charsetNumber: 192, fieldLength: 765, fieldType: 253, flags: 4097, decimals: 0 }, some_date: { length: 59, received: 59, number: 4, type: 4, catalog: 'def', db: 'test_nodejs', table: 'test', originalTable: 'test', name: 'some_date', originalName: 'some_date', charsetNumber: 63, fieldLength: 10, fieldType: 10, flags: 4225, decimals: 0 } }
    [ { id: 1, some_text_data: 'Test', some_date: Invalid Date } ]

    На этом всё. Если есть какие-либо вопросы по данной теме, задавайте их в комментариях ниже, постараюсь ответить.

    Источник: https://dizballanze.com/ru/nodejs-mysql/

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

    Это в основном для будущих читателей. Поскольку вопрос (по крайней мере, название) фокусируется на “подключении к базе данных sql-сервера из node js”, я хотел бы включить в модуль “mssql” node.

    В настоящий момент мы имеем стабильную версию драйвера Microsoft SQL Server для NodeJs ( “msnodesql” ), доступную здесь: https://www.npmjs.com/package/msnodesql. Хотя он отлично справляется с собственной интеграцией с базой данных Microsoft SQL Server (чем любой другой модуль node), есть несколько вещей, о которых нужно помнить.

    “msnodesql” требуется несколько предварительных условий (например, python, VС++, родной клиент SQL и т.д.), которые будут установлены на главной машине. Это делает ваше приложение “node” “Windows” зависимым. Если у вас все в порядке с развертыванием на базе Windows, лучше всего работать с msnodesql.

    С другой стороны, существует еще один модуль под названием “mssql” (доступно здесь https://www.npmjs.com/package/mssql), который может работать с “утомительным” или “msnodesql” на основе конфигурации. Хотя этот модуль может быть не таким всеобъемлющим, как “msnodesql” , он в значительной степени решает большинство потребностей.

    Если вы хотите начать с “mssql”, я наткнулся на простое и прямое видео, в котором объясняется подключение к базе данных Microsoft SQL Server с помощью NodeJs: https://www.youtube.com/watch?v=MLcXfRH1YzE

    Исходный код для вышеупомянутого видео можно найти здесь: http://techcbt.com/Post/341/Node-js-basic-programming-tutorials-videos/how-to-connect-to-microsoft-sql-server-using-node-js

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

    var sql = require(“mssql”); var dbConfig = { server: “localhost\SQL2K14”, database: “SampleDb”, user: “sa”, password: “sql2014”, port: 1433
    }; function getEmp() { var conn = new sql.Connection(dbConfig); conn.connect().then(function () { var req = new sql.Request(conn); req.query(“SELECT * FROM emp”).then(function (recordset) { console.log(recordset); conn.close(); }) .catch(function (err) { console.log(err); conn.close(); }); }) .catch(function (err) { console.log(err); }); //–> another way //var req = new sql.Request(conn); //conn.connect(function (err) { // if (err) { // console.log(err); // return; // } // req.query(“SELECT * FROM emp”, function (err, recordset) { // if (err) { // console.log(err); // } // else { // console.log(recordset); // } // conn.close(); // }); //}); } getEmp();

    Вышеприведенный код довольно понятен. Мы определяем параметры соединения db (в объекте JS “dbConfig” ), а затем используйте объект “Connection” для подключения к SQL Server. Чтобы выполнить оператор “SELECT”, в этом случае он использует объект “Запрос”, который внутренне работает с объектом “Connection”. Код объясняет оба варианта использования “обещаний” и “обратных вызовов”.

    В приведенном выше исходном коде объясняется только подключение к базе данных sql-сервера и выполнение запроса SELECT. Вы можете легко перейти на следующий уровень, выполнив документацию “mssql” node, доступную по адресу: https://www.npmjs.com/package/mssql

    UPDATE: Существует новое видео, которое выполняет операции CRUD с использованием чистого стандарта Node.js REST (с Microsoft SQL Server) здесь: https://www.youtube.com/watch?v=xT2AvjQ7q9E. Это фантастическое видео, которое объясняет все с нуля (у него много кодов, и это не будет приятно объяснить/скопировать весь код здесь)

    Источник: http://qaru.site/questions/225686/connect-to-sql-server-database-from-nodejs

    HTTP/2 + antiDDoS, PHP 4-7 @ CloudLinux

    • WEB-окружение
    • PHP / Python / NodeJS
    • СУБД
    • Почта
    • Backups
    • cPanel

    Linux, Apache, MySQL, PHP

    LAMP – набор программного обеспечения с открытым исходным кодом, которой обычно устанавливается на сервер для отображения динамических веб-сайтов и веб-приложений.

    LAMP обозначает операционную систему Linux с установленным веб-сервером Apache. Данные сайта хранятся в базе данных MySQL, динамический контент обрабатывается с помощью PHP.

    • CloudLinux – современная операционная система, разработанная специально для предоставления более стабильного виртуального хостинга;
    • Apache – надежный и гибкий в конфигурации Web-сервер, поддерживающий работу с большинством CMS;
    • MySQL – система управления базами данных для создания динамических сайтов;
    • PHP – язык программирования общего назначения, специально для Web-разработок.

    PHP, Python, Ruby – выбор версии и модулей

    PHP – это распространенный язык программирования общего назначения с открытым исходным кодом. Версии PHP: 4.4, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3

    Node / Node.js – программная платформа, основанная на движке V8. Версии Node.js: 6.14.3, 8.11.3, 9.11.2, 10.14.1, 11.3.0

    Python – язык программирования общего назначения, ориентированный на повышение производительности. Версии языка Python: 2.7, 3.3, 3.4, 3.5, 3.6, 3.7

    Ruby – динамический язык программирования с открытым исходным кодом с упором на простоту и продуктивность. Версии Ruby: 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5

    MySQL + phpMyAdmin, PostgreSQL + phpPgAdmin

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

    phpMyAdmin — веб-приложение, представляющее собой веб-интерфейс для администрирования СУБД MySQL. PHPMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных.

    База данных PostgreSQL – это полноценная SQL СУБД с большим списком возможностей и огромным количеством людей по всему миру, которые используют и разрабатывают эту систему управления базами данных.

    phpPgAdmin – веб-приложение с открытым кодом, представляющее собой веб-интерфейс для администрирования СУБД PostgreSQL. phpPgAdmin позволяет через браузер осуществлять администрирование сервера PostgreSQL.

    Почта, спам фильтры, фильтры обработки писем

    Неограниченное количество почтовых ящиков и перенаправлений почтовых сообщений на всех тарифах.

    SpamAssassin – почтовый фильтр с открытым исходным кодом, предназначенный для выявления спама путем проведения эвристических проверок почтовых заголовков и текстов.

    Sender Policy Framework, SPF – расширение для протокола отправки электронной почты через SMTP.

    DomainKeys Identified Mail, DKIM объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты.

    Ежедневное резервное копирование

    Автоматическое резервное копирование выполняется на всех серверах хостинга. Все данные сохраняются в двух гео-независимых Дата Центрах.

    Резервное копирование выполняется каждый день.

    Работа с резервными копиями доступна клиентам из панели управления хостингом cPanel.

    Каждый клиент может самостоятельно, без обращения в поддержку, работать с резервной копией своего сайта.

    Панель управления хостингом cPanel

    cPanel – самая популярная и удобная панель управления хостингом. Включает в себя полный спектр возможностей и функций по сопровождению веб-сайтов, почты, баз данных.

    cPanel + автоматическая установка скриптов = удобное решение для клиентов, позволяющее в несколько кликов установить более 400 различных CMS.

    Загрузка файлов по FTP, либо через удобный диспетчер файлов в панели управления хостингом cPanel.

    Автоматическая проверка всех данных (по FTP, почты) на вирусы. Блокировка нежелательных адресов и получателей.

    Выполнение заданий по расписанию Crontab.

    Источник: https://hostink.ru/

    Авторизация пользователей Express.js + Mongo

    Если базовая авторизация не подходит — пользователи регистрируются сами, а внедрять passport.js не то чтобы рано, но надо разобраться с самого начала как оно работает. То здесь описан механизм хранения авторизации пользователя (его сессии) в Mongo, хотя можно заменить на любое поддерживаемое в express-session.

    Модель пользователя

    Для того чтобы создавать новых пользователей и проверять потом на соответствие логин/пароль будем использовать Mongoose. Первым делом надо описать модель пользователя. Файл модели может лежать где угодно, папка db/models в корне проекта вполне подойдёт.

    Кстати, все примеры описанные здесь основаны на базовом express приложении, том самом которое создаётся по команде в консоли express ./.

    var mongoose = require('mongoose');var User = new mongoose.Schema({module.exports = mongoose.model('User', User)

    Одной модели к сожалению мало, надо создать функции необходимые для управления моделью. Создайте файл api.js в корне проекта, и вставьте следующее содержимое.

    var mongoose = require('mongoose')var crypto = require('crypto')var db = mongoose.connect(“mongodb://user:[email protected]:27409/coffeeplaces”)var User = require('./db/models/User.js')exports.createUser = function(userData){password: hash(userData.password)return new User(user).save()exports.getUser = function(id) {exports.checkUser = function(userData) {.findOne({email: userData.email})if ( doc.password == hash(userData.password) ){console.log(“User password is ok”);return Promise.resolve(doc)return Promise.reject(“Error wrong”)return crypto.createHash('sha1').update(text).digest('base64')

    Сессии! Полный вперёд!

    Конечно, можно дополнить любыми своими полями, email или фотография. Так, модель готова, теперь необходимо подключить управление сессиями в приложение. Установите модули:

    espress-session — необходим для управления сессиями
    connect-mongo — хранение идентификаторов сессий в базе данных Mongo

    Второй модуль отвечает за хранение сессий в MongoDB. Без него сессии могут храниться в оперативной памяти, в таком случае при каждой перезагрузке приложения пользователи должны будут авторизоваться заново.

    var mongoose = require(“mongoose”)var session = require('express-session')var MongoStore = require('connect-mongo')(session);  secret: 'i need more beers',  saveUninitialized: false,  // Место хранения можно выбрать из множества вариантов, это и БД и файлы и Memcached.    url: 'mongodb://user12345:foobar@localhost/test-app',

    Механизм

    Приготовления приготовлены, пришла пора создать пользователя. Несколько middleware для всех CRUD операций будут содержать всю логику управления пользователями (ну, кроме удаления, но это домашняя работа). У вас уже есть файл users.js в папке routes, замените его содержимое.

    var express = require('express');var router = express.Router();var api = require('../api.js')/* Создание пользователя */router.post('/login', function(req, res, next) {if (req.session.user) return res.redirect('/')req.session.user = {id: user._id, name: user.name}router.post('/', function(req, res, next) {   console.log(“User created”)   if (err.toJSON().code == 11000){   res.status(500).send(“This email already exist”)router.post('/logout', function(req, res, next) {

    Уже сейчас вы можете создать пользователя. Для этого откройте любой сервис который умеет отправлять POST запрос (Postman) и предварительно запустив приложение npm start отправьте POST-запрос:

    Всё, можно проверить базу данных, где в коллекции users вы найдёте первого пользователя.

    Шаблон

    Осталось реализовать логин и деавторизацию. Замените файл с обработкой запросов на главную страницу, тот что index.js в папке routes. Следующим содержимым.

    var express = require('express');var router = express.Router();var api = require('../api')router.get('/', function(req, res, next) {res.render('index', data);res.render('index', data);

    А шаблон формы регистрации/авторизации при помощи шаблонизатора jade может выглядеть так (замените содержимое index.jade):

    a(href='/users/logout') Exit if you wishform(method='post', action='/users')input(type='text', name='name')input(type='text', name='email')input(type='password', name='password')form(method='post', action='/users/login')input(type='text', name='email')input(type='password', name='password')

    Источник: http://blog.rukomoynikov.ru/avtorizatsiya-polzovatelej-express-js-mongo/

    NodeJS. Введение

    Вы здесь: Главная – JavaScript – JavaScript Основы – NodeJS. Введение.

    Сегодня я начинаю серию статей, в которой вы узнаете, что такое NodeJS, как установить NodeJS, как работает движок V8 и некоторые другие особенности этой платформы.

    Описание

    Итак, что же такое NodeJS? NodeJS – это платформа, основанная на движке V8 от Google. NodeJS использует управляемую событиями, неблокирующую модель, которая позволяет писать легкие и эффективные приложения. NodeJS имеет свой пакетный менеджер, названный npm, и это – крупнейшая экосистема библиотек с открытым исходным кодом в мире.

    Платформа позволяет нам:

    • запускать javascript на компьютере/сервере
    • читать, удалять и обновлять файлы
    • просто общаться с базой данных

    В чем причина популярности платформы?

    Помимо этой платформы существуют и другие, но они намного менее популярны. Почему так? На это есть несколько причин:

    • платформа использует javascript
    • очень быстрая(работает на движке V8 и использует неблокирующую систему)
    • огромная экосистема библиотек с открытым исходным кодом
    • прекрасно подходит для приложений, работающих в реальном времени(например, чат)

    Что вы узнаете, прочитав серию статей?

    Во-первых, мы разберемся с внутренней работой платформы. Рассмотрим движок V8, модули, обработку событий, работу с файловой системой.

    Во-вторых, создадим свой собственный веб-сервер, где рассмотрим маршрутизацию, express, шаблоны.

    И, наконец, создадим свое первое приложение – список дел, работающий в реальном времени(todo list).

    Что нужно знать, чтобы успешно изучить тему?

    Первое, что вам нужно знать, это, конечно, javascript. Если вы не уверены, что знаете его на нужном уровне, советую приобрести видеокурс JavaScript, jQuery и Ajax с Нуля до Гуру, пройдя который для вас больше не будет преград для изучения новых технологий, связанных с этим языком программирования.

    Вы должны знать HTML, CSS хотя бы на базовом уровне. Если такие знания отсутствуют, то почитайте статьи на нашем сайте или, что будет намного быстрее и лучше, обратите внимание на видеокурс Вёрстка сайта с нуля.

    Последнее, что вам потребуется, это знание основ работы в командной строке(терминале).

    Заключение

    Итак, сегодня мы узнали, что такое NodeJS, какие знания нам потребуются для успешного изучения технологии, а уже в следующей статье мы приступим к установке платформы.

    Спасибо за внимание!

    Предыдущая статья Следующая статья

    Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:

      Она выглядит вот так:<\p>

    2. Текстовая ссылка:

      Она выглядит вот так: Как создать свой сайт

    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Источник: https://MyRusakov.ru/nodejs-introduction.html

    Установка и настройка Node.js

    • site-name.com (корневая папка вашего сайта)
    • htdocs
    • www

       .htaccess

    • nodejs_app
    • www

       app.js

    • nodejs_tmp
    • www

       always_restart.txt

       restart.txt

    Ваша цель – создать идентичную структуру и разместить файлы в соответствующих схеме директориях. Далее мы наполним их содержимым.

    Установка Node.js

    Чтобы сразу начать пользоваться необходимой вам версией Node, либо скачайте её с официального сайта и распакуйте через файловый менеджер в панели управления, либо, если вы уже получили доступ по SSH, можете ввести следующие команды в терминале для загрузки и распаковки архива с файлами:

    wget https://nodejs.org/download/release/node_version/node-file.tar.gz
    tar xfz node-file.tar.gz

    1. Загружать нужно 64-разрядную версию для Linux
    2. Архив должен иметь расширение .tar.gz, как видно из примера выше

    Работа с .htaccess файлом

    Чтобы Passenger мог взаимодействовать с Node.js, в файле .htaccess (мы рекомендуем располагать его здесь ./site-name.com/htdocs/www/.htaccess) необходимо прописать следующее:

    PassengerAppRoot /home/hostXXXXXXX/site-name.com/nodejs_app/www
    PassengerAppType node
    PassengerStartupFile app.js
    PassengerNodejs /home/hostXXXXXXX/node/bin/node
    PassengerRestartDir /home/hostXXXXXXX/site-name.com/nodejs_tmp/www
    PassengerFriendlyErrorPages on

    • Вместо hostXXXXXXX вы прописываете номер своего аккаунта
    • site-name.com – это имя папки с вашим проектом
    • app.js – название файла, который запускает работу серверной части (вы можете назвать его как захотите, главное, пропишите соответствующее имя в .htaccess)
    • PassengerNodejs – путь до исполняемого файла Node.js
    • PassengerFriendlyErrorPages – опция для отображения ошибок, в случае, когда приложение работает не корректно, или не запускается (по умолчанию – PassengerFriendlyErrorPages off). Данная опция выводит сообщения об ошибке, некоторые предложения по решению проблемы, трассировку и дамп переменных среды выполнения. Рекомендуется включать эту опцию только на этапе разработки. После её окончания удалите или закомментируйте в .htaccess эту опцию.

    Включение лога ошибок

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

    Во вкладке «Домены»→«Прикрепление домена», рядом с надписью “Лог-файлы веб сервера” есть переключатель, который включает/выключает данную опцию.

    После включения, логи начнут писаться в течение 5 минут (при обычной загруженности сервера).

    Перезапуск приложения

    Файлы restart.txt и always_restart.txt необходимы для того, чтобы при внесении вами каких-либо изменений в рабочие файлы (к примеру, app.js) Passenger, применяя правила записанные в .htaccess, мог перехватывать их и применять в работе сайта. Отличие заключается в том, что restart.

    txt сработает только один раз, а always_restart.txt перезапускает процесы веб-сервера при каждом поступившем запросе. Рекомендуется использовать always_restart.txt только при разработке.

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

    Если Вы уверены в том, что ваш код работает без багов, но всё-равно видите ошибки на странице, можно принудительно завершить все процессы с помощью следующей команды через SSH-соединение:

    killall -2 “Passenger NodeApp”

    После чего перезагрузить страницу.

    Код для app.js

    И напоследок, осталось добавить скрипт для запуска Node в app.js. Ниже представлен код с официального сайта Node.js (в дальнейшем вы можете изменять его по своему усмотрению, сейчас мы лишь хотим убедиться, что всё работает):

    const http = require('http');
    const hostname = '127.0.0.1';
    const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World
    ');
    }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`);
    });

    Итак, все настройки произведены. Откройте сайт в новой вкладке. Если выводится Hello world, то всё работает, как и ожидалось. В противном случае, ещё раз пройдите по вышеприведённому алгоритму действий. Возможно, вы что то упустили.

    Пример подключения модуля

    Чтобы установить какой-либо модуль в директорию с файлами приложения, при этом используя установленную версию Node.js, необходимо для начала прописать путь до исполняемого файла node в .bash_profile (он лежит в корне вашего аккаунта). После этого вы сможете обращаться к нему из любой директории вашего проекта.

    Итак, откройте .bash_profile и допишите следующую строку:

    PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/site-name.com/node/bin

    Для примера, рассмотрим подключение модуля mysql для работы с базой данных (предварительно, создайте таблицу под любым названием и поместите туда несколько записей). Чтобы установить даный модуль, зайдите через SSH-соединение в директорию «nodejs_app/www» и введите в терминале команду:

    npm init –force

    Таким обазом создастся файл package.json с данными о вашем приложении. После этого наберите команду:

    npm install mysql –save-dev

    Вы увидите, что автоматически создастся новая директория «node_modules» и подгрузятся необходимые нам для работы файлы.

    Также, рекомендуем загрузить 2 часто используемых модуля – fs (для работы с файлами) и util (для красивого вывода объектов в консоль)

    npm install fs util –save-dev

    Далее, открываем файл нашего приложения app.js и добавляем следующий код:

    const fs = require('fs');
    const util = require('util');
    var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'});
    var log_stdout = process.stdout; console.log = function(d) { log_file.write(util.format(d) + '
    '); log_stdout.write(util.format(d) + '
    ');
    }; const mysql = require('mysql');
    const connection = mysql.createConnection({ host : 'localhost', user : 'hostXXXXXXX', password : 'your_password', database : 'your_database_name'
    }); connection.connect();
    connection.query('SELECT * FROM my_table', function (error, results, fields) { if (error) throw error; results.forEach(function(obj) { console.log( util.inspect(obj) ); });
    });
    connection.end();

    В коде выше мы, с помощью модуля fs, создаём новый файл debug.log, в который будем помещать вывод функции console.log

    Далее, переопределяем саму функцию console.log, задействуя поток на запись.

    Теперь, при помощи модуля mysql, подключаемся к своей БД и выбираем все записи из нужной нам таблицы, прописывая их в созданный нами файл.

    Проверим, всё ли сработало: перезагрузите страницу своего сайта и откройте файл debug.log – вы должны увидеть вывод всех записей из таблицы.

    Источник: https://www.hostland.ru/services/nodejs-nastroyka

Ссылка на основную публикацию
Adblock
detector