Привет Пикабу,
Не давно появилась необходимость держать большое количество дополнительных, не исполняемых файлов внутри моего приложения на node js. В связи с чем мне понадобилась некое подобие на базы данных или внешнего хранилища для этих файлов. Но имеющееся сервисы такого рода мне показались уж слишком громоздкими, в связи с чем я решил создать собственный.
Начать стоит с того, что мало било просто создать приложение, нужно било создать еще и npm модуль для работы с ним.
Начнем пожалуй с приложения. В основу его лег модуль fs (File System).
Приложение принимает объект, в котором содержится метод, путь, название файла, ну итак же data если мы хотим записать файл. Возвращает же приложение сообщение о успешном выполнении вроде "directory has been created" или содержимое файла если вы пытаетесь прочитать файл. Так же оно может вернуть объект содержавший в себе сообщение о неудавшимся действии и саму ошибку.
Ну а теперь по подробней непосредственно об установке и работе с приложением.
Для начала выберите папку в которой будет находится сервер базы данных и cклонируйте исходники приложения с GitHub командой:
git clone https://github.com/GreenHouseControllers/GH-database.git ,
ну или же если у вас не установлен GitHub скачайте и распакуйте zip архив.
Чтоб запустить сервер откройте терминал в его корне и используйте команду npm start. Теперь приложение-база данных готово к работе.
Теперь переместимся в ваше приложение. Чтоб начать вам необходимо установить npm модуль c помощью команды:
npm install ghc-db --save.
После установки вы можете проверить наличие модуля в package.json.
Далее необходимо подключить модуль в ваш проект строчкой:
const db = require('ghc-db');
Немного о методах
Всего в у этого модуля 7 методов, а именно:
1. createDir - создает папку.
2. removeDir - удаляет папку (только если она пустая если в ней что то есть необходимо удалить содержимое, в противном случае вы получите ошибку.
3. createFile - создает файл.
4. removeFile - удаляет файл.
5. readFile - читает содержимое файла.
6. readJson - читает json файл.
7. writeFile - записывает data в файл.
О роутинге
Один из нюансов, который может вызвать проблемы это то, что если обращение к базе данных будет происходить в роуте, то колбек роута должен быть асинхронным. Таким, как указанов примере ниже
app.get('/', async (req, res) => {
let answer = await db.createDir('', 'exemple');
res.status(200).send(answer);
});
Общение с базой
npm модуль использует для возврата вам ответа 'return', по этому перед вызовом метода вы должны создать переменную.
метод вызывается после await.
Структура для всех кроме witeFile: let answer = await method(path, name);
Для writeFile вам предварительно нужно создать переменную data в которую вы передадите то, что вы хотите передать (переменную не обязательно называть data).
Структура для witeFile: let answer = await method(path, name);
Пример для всех кроме writeFile:
let answer = await db.createDir('a/b/c', 'exemple');
Пример для writeFile:
let data = {
"name": "jack",
"lastname": "piterson"
}
await db.createDir('a/b/c', 'index.json', data);
На этом вроде как все. Буду рад если вас заинтересует данное приложение, жду конструктивной критики.
Благодарю за внимание.