5

Микросервис для работы с файлами на NodeJS

Микросервис для работы с файлами на NodeJS

Привет Пикабу,

Не давно появилась необходимость держать большое количество дополнительных, не исполняемых файлов внутри моего приложения на 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);

На этом вроде как все. Буду рад если вас заинтересует данное приложение, жду конструктивной критики.

Благодарю за внимание.