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);

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

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

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Я далек конечна от программирования, но интересно, хранить файлы в виде файлов уже не модно?

раскрыть ветку (14)
1
DELETED
Автор поста оценил этот комментарий

Возможно, файлов очень много и они маленькие. Как в проектах на Java. Но и тогда можно хранить в виде одного файла.

Что и делают в Java - .jar

А в общем случае, формат, известный несколько десятилетий - .tar

раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Интересно вы архивы описали, не разу не упомянув термин :)

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Они думали что я не пойму.

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

Да, мы думали, что они не поймут, так как далеки от программирования :)

0
Автор поста оценил этот комментарий
Если JAR - это действительно ZIP архив с файлами, то TAR (tarball) - исключение. Это контейнер с информацией о файлах без сжатия)
раскрыть ветку (2)
0
Автор поста оценил этот комментарий

tar - tape archive

0
DELETED
Автор поста оценил этот комментарий

TAR тоже архив. Смотрите определение

0
Автор поста оценил этот комментарий

Они там в виде файлов и хранятся.

0
Автор поста оценил этот комментарий

они и хранятся в виде файлов, но удаленно, не загромождая приложение.

раскрыть ветку (5)
0
DELETED
Автор поста оценил этот комментарий

HTTP[S], FTP, WebDAV, SSH, Telnet - всё не то?

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Файлы как раз передаются по http.


Если у вас клиент-серверное приложение, которое включает в себя работу с файлами, то решение ТС - норм.

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

раскрыть ветку (2)
1
DELETED
Автор поста оценил этот комментарий

По-моему, ТС делает велосипед.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Именно :) в самую точку.

0
Автор поста оценил этот комментарий
Опечатки.. witeFile
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества