Как я могу создать файл коллекции Netlify CMS после отправки формы Netlify? - PullRequest
0 голосов
/ 01 апреля 2019

В настоящее время у меня есть приложение GatsbyJS, которое использует Netlify CMS (NCMS) для управления контентом и Netlify через GitHub для хостинга / развертывания.

Я хотел бы создать очень простую систему форм заказов, но я хотел бы использовать файлы JSON и коллекции NCMS для представления данных, потому что у меня будут очень минимальные требования к данным, и я хотел бы иметь возможность полностью управлять данными через NCMS.

Например, у меня есть коллекция Products и коллекция Orders. Products использует расширение JSON и содержит файлы JSON, которые представляют каждый продукт. Там все выглядит хорошо. Для Orders я хочу иметь возможность создавать новые записи из NCMS ИЛИ из формы заказа в моем приложении.

Создание Orders записей в NCMS должно быть достаточно простым с использованием виджета отношений, чтобы включить запись Products в каждый заказ. Я пытаюсь понять, как я могу создавать файлы JSON в моей файловой системе (репо) после отправки формы. Я предполагаю, что это возможно каким-то образом с веб-зацепками GitHub, потому что NCMS делает это, когда вы создаете файлы в их системе.

Могу ли я, используя некоторую комбинацию API-форм Netlify, функций Netlify и / или веб-залов GitHub, создать файл в моем хранилище GitHub, когда пользователь отправляет форму Netlify в моем приложении?

Если это невозможно, моя стратегия последующих действий - сохранить данные Orders в базе данных MongoDB. У меня пока нет опыта работы с Mongo, но я знаю, что он основан на «плоском» формате данных с использованием синтаксиса, подобного JSON. Могу ли я сохранить свои данные заказа в коллекции Mongo после отправки через функцию Netlify Lambda, затем запустить сборку через Netlify и в моем приложении получить данные Mongo во время сборки и каким-то образом создать файл для каждого объекта заказа, возможно, через API Гэтсби?

Моим последним средством было бы установить административную область моего приложения, где заказы можно было бы просматривать, изменять и удалять. Я бы предпочел избежать этого, потому что: а) у меня нет услуг Netlify Pro и, следовательно, у меня нет доступа к защищенному паролем доступу к сайту (хотя я не уверен, как NCMS использует Identity и может избежать премиум-плана?), и б) я бы хотел, чтобы все администрирование данных осуществлялось через одну и ту же платформу (Netlify CMS).

Извините за длинный вопрос, и я ценю совет.

1 Ответ

2 голосов
/ 01 апреля 2019

Вы можете сделать это с помощью Netlify Form, Function & Github API. Я сделал нечто подобное для одного из моих сайтов в Гэтсби, где данные формы передаются непосредственно в функцию Netlify.

Если вы хотите воспользоваться функциями Netlify Form, такими как предотвращение спама и уведомление по электронной почте, я думаю, это будет выглядеть примерно так:

  • Настройте форму Netlify
  • Настройка функции Netlify , которая прослушивает событие submission-created. В теле запроса вы найдете объект payload, который содержит данные формы, а также информацию о вашем сайте (на случай, если у вас их много). Netlify имеет пакет , который действительно облегчает процесс разработки.

  • Инициировать вызов Github API , чтобы либо создать файл для этого представления, либо обновить существующий файл, содержащий все представления.

  • На этом этапе вы можете настроить netlifyCMS для чтения содержимого этой папки / файла и позволить администратору просматривать / изменять представленные материалы.

Надеюсь, это поможет!

...