Если вы хотите быстро создать прототип своих следующих веб-приложений, попробуйте использовать Google Spreadsheets в качестве базы данных.
С помощью созданной мной небольшой библиотеки под названием get-sheet-done вы можете получить бесплатную облачную базу данных с редактором графического интерфейса менее чем за 5 минут.
История создания Get Sheet Done
Некоторое время назад мне нужно было быстро создать прототип веб-приложения, которое могло бы отображать структурированные данные. Загвоздка заключалась в том, что эти данные приходилось часто редактировать нетехническим специалистам.
Поскольку это был прототип, я искал решение, которое дало бы мне максимальную отдачу с учетом времени разработки и затрат на обслуживание.
Я рассмотрел несколько решений, в том числе использование полного подхода «бэкэнд как услуга», при котором данные хранятся в виде файла в Dropbox. Затем я выбрал несколько неортодоксальное решение: я сохранил данные в электронной таблице Google.
Когда база данных на основе электронных таблиц является подходящим решением?
Использование электронных таблиц Google в качестве базы данных для веб-приложений не является основным решением, и оно может подходить или не подходить для вашего следующего проекта.
Чтобы помочь вам решить, подходит ли это вариант, я составил следующий список соображений.
Помните: мы говорим о электронной таблице, которая отлично подходит для структурированных табличных данных. Но не подходит для хранилища документов / объектов.
Помимо этого, следует учитывать некоторые плюсы и минусы:
Плюсы
- Это бесплатно
- Очень легко настроить - не нужны ключи API или сложные SDK
- Отсутствие обслуживания
- Вы получаете бесплатный графический интерфейс для редактирования данных
- Вы получаете управление доступом на запись бесплатно
- Может включать внутренние расчеты с использованием функций электронных таблиц
- Приложение, использующее данные, может быть легко обновлено на более позднем этапе для использования реальной базы данных, поскольку данные представлены как стандартный JSON.
- Некоторого уровня автоматизации можно достичь, используя приложения-скрипты в сочетании с временными триггерами.
- Его можно комбинировать с Google Forms для сбора данных.
Минусы
- Нет логики фильтрации на стороне сервера, о которой можно было бы говорить
- Все данные, к которым вы хотите получить доступ, должны быть общедоступными.
- Вся база данных редактируется вручную, поэтому человеческая ошибка может нарушить работу приложения. Например, если кто-то случайно изменит метку какого-либо поля, оно не будет доступно для приложения.
Это можно частично исправить, защитив критические ячейки - В таблице может быть до 2 миллионов ячеек
Как я это реализовал
Мне не удалось найти много информации или хороших библиотек для удобного чтения данных из электронной таблицы Google. Поэтому я решил накатить собственное решение. Теперь он доступен на npm как готовый пакет.
Моя реализация основана на том факте, что после публикации электронной таблицы в Интернете она также доступна в виде стандартного RSS-канала, который можно извлекать и анализировать.
Одна из сложностей заключается в том, что вам нужно получить его с помощью JSONP или как-то обработать CORS. Я решил пойти с JSONP и использовать библиотеку fetch-jsonp для управления этим, поэтому нет необходимости в особых мерах.
Как это использовать
Вот что вам нужно сделать, чтобы получить простую редактируемую базу данных для вашего веб-приложения:
- Создайте электронную таблицу Google с некоторыми данными
- Опубликуйте лист в Интернете:
File -> Publish to the web
.
Обратите внимание на идентификатор документа из URL-адреса. - Установите пакет:
npm install --save get-sheet-done
- Получите данные:
import GetSheetDone from 'get-sheet-done' GetSheetDone.labeledCols(DOCUMENT_ID).then(sheet => console.log(sheet))
5. Прибыль!
Обратите внимание, что есть три функции, которые вы можете использовать для извлечения данных, в зависимости от того, как они должны анализироваться: необработанный 2-мерный массив, массив объектов, объект объектов.
Вот живая демонстрация, с которой вы можете поиграть.
Стоит подумать об использовании Google Spreadsheets в качестве источника данных для веб-приложения, особенно если вы просто создаете быстрый прототип. У него есть уникальные преимущества, и его легко реализовать с моей библиотекой (или без нее).
Сообщите мне в комментариях, если вы нашли эту библиотеку полезной и есть ли отсутствующие функции.