- PVSM.RU - https://www.pvsm.ru -
Отсутствие универсальных веб-интерфейсов для управления распространенными СУБД, несколько усложняет освоение Node.js [1], а разворачивать рядом другой веб-сервер и другой язык с инфраструктурой, ой как не хочется. Открывать порты и управлять базами, подключаясь с другого сервера или со своего рабочего компьютера — это и неудобно и есть соображения безопасности. Поэтому мы решили включить такой инструмент в платформу для веб-приложений Impress [2], которую анонсировали [3], о которой я немного писал [4] и которая доступна в открытом коде для всеобщей пользы [5]. Задумка такая: реализовать простой и удобный унифицированный интерфейс для СУБД, которые чаще всего применяются в с Node.js, позаботиться о быстром развертывании (просто скопировать папку) и независимости от среды. В бета-версии уже поддерживаются MySQL [6], MongoDB [7] и в скором времени очередь дойдет до PostgreSQL [8] и Oracle [9].
Для всех операций с БД используется скаффолдинг, т.е. построение интерфейсов, запросов и всех операций обработки данных на основе динамического получения метаданных о структуре БД или интроспекции структур СУБД. Интерфейс представлен ниже на картинке. Дерево трехуровневое, первый уровень — соединения с БД (они, естественно, пока двух типов), второй уровень — базы данных, третий уровень — коллекции (для Mongo) и таблицы (для MySQL). На узлах дерева можно вызывать контекстное меню правой кнопкой мыши.
Функциональность же такая:
Полная процедура настройки такая (это из-за безопасности, но в, большинстве случаев, она существенно сокращается):
1. Создаем каталог проекта и в устанавливаем в него Impress [2] из репозитория npm [10].
$ npm install impress
2. Копируем из папки /node_modules/impress/examples/copyContentToProjectFolder все содержимое в корневой каталог проекта.
3. В файле config.js прописываем нужные нам базы данных (конекшенстринги к ним) в разделе «databases».
4. В файле /sites/localhost/dbmi/access.js находим настройки доступа
module.exports = {
guests: true, // позволять или нет заходить без автентификации
logged: true, // позволять или нет заходить автентифицированным пользователям
http: true, // доступно или нет по http
https: true, // доступно или нет по https
groups: [] // пользователям каких групп доступно (массив строк)
}
5. Для того, чтобы закрыть админпанель паролем, нужно создать базу пользователей при помощи команды «node setup.js». И потом запустить систему «node server.js». Зайти на 127.0.0.1 [11] и зарегистрироваться («Create account» справа вверху). После этого, можно закрыть возможность регистрации, добавив в /sites/localhost/api/auth/register.json файл access.js и задав в нем guests = false.
6. Если хочется ходить к базе через HTTPS, то положите в корень проекта свои server.key и server.cer файлы, а так же поправьте в config.js параметр servers.www.protocol = «https».
7. Ну и заходить можно через 127.0.0.1/dbmi [12] или на 127.0.0.1 [11] и там в меню слева выбрать вреди примеров пункт «DB Management Interface».
Весь модуль DBMI занимает сейчас 70кб, половина из которых состоит из css и html, примерно четверть — серверный js, и еще четверть — клиентского. Думаю, что это не так много, чтобы разобраться в коде, если что-то хочется поправить или дописать. Небольшой размер, это еще и потому, что платформа Impress (нашего же изготовления), производить большую часть инфраструктурной работы, как маршрутизацию URLов, обработку шаблонов, огромное количество вспомогательных функций по работе с базами данных, особенно с MySQL. Что планируем дописывать мы в ближайшее время:
require('impress');
var schemaCore = require('./schemas/impress.core.schema.js'),
schemaCMS = require('./schemas/impress.cms.schema.js');
impress.init(function() {
console.log(db.schema.mysql.generateScript(schemaCore, true).script);
console.log(db.schema.mysql.generateScript(schemaCMS, true).script);
});
Движется шустро, но нужно штука такая, что всем нужно и желательно — еще шустрее. Так что, присоединяйтесь к тестированию и доработке, будем рады Вашему участию.
Автор: MarcusAurelius
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mysql/42501
Ссылки в тексте:
[1] Node.js: http://nodejs.org/
[2] Impress: https://npmjs.org/package/impress
[3] анонсировали: http://habrahabr.ru/post/182714/
[4] немного писал: http://habrahabr.ru/post/183188/
[5] всеобщей пользы: https://github.com/tshemsedinov/impress
[6] MySQL: http://www.mysql.com/
[7] MongoDB: http://www.mongodb.org/
[8] PostgreSQL: http://www.postgresql.org/
[9] Oracle: http://www.oracle.com/index.html
[10] npm: https://npmjs.org/
[11] 127.0.0.1: http://127.0.0.1
[12] 127.0.0.1/dbmi: http://127.0.0.1/dbmi
[13] Источник: http://habrahabr.ru/post/192302/
Нажмите здесь для печати.