如何在提交Netlify表单时创建Netlify CMS集合文件?

问题描述 投票:0回答:1

我目前有一个GatsbyJS应用程序,它使用Netlify CMS(NCMS)进行内容管理,Netlify通过GitHub进行托管/部署。

我想构建一个非常简单的订单表单系统,但我想使用JSON文件和NCMS集合来表示数据,因为我将拥有非常小的数据要求,并且我希望能够通过NCMS完全管理数据。

例如,我有一个Products系列和一个Orders系列。 Products使用JSON扩展并包含代表每个产品的JSON文件。那里的一切都很好看。对于Orders,我希望能够从我的应用程序中的订单表单中创建新的NCMS条目。

在NCMS中创建Orders条目应该足够简单,使用关系小部件将Products条目合并到每个订单中。我想弄清楚的是我如何在表单提交时在我的文件系统(repo)中创建JSON文件。我认为这可以通过GitHub webhooks以某种方式实现,因为NCMS在您的系统中创建文件时正在执行此操作。

我可以使用Netlify的Forms API,Netlify函数和/或GitHub webhooks的组合,当用户在我的应用程序中提交Netlify表单时,在我的GitHub存储库中创建一个文件吗?

如果这是不可能的,我的后续策略是将Orders数据保存在MongoDB数据库中。我对Mongo没有任何经验,但我知道它基于使用类似JSON语法的“平面”数据格式。我可以在通过Netlify Lambda函数提交时将我的订单数据保存在Mongo集合中,然后通过Netlify触发构建,并在我的应用程序中在构建时拉入Mongo数据,并以某种方式为每个订单对象创建一个文件,可能通过盖茨比的API?

我的最后一招是设置我的应用程序的管理区域,可以查看,修改和删除订单。我宁愿避免这种情况,因为a)我没有Netlify Pro服务,因此无法访问受密码保护的网站访问权限(虽然我不确定NCMS如何利用身份并且能够避免高级计划?), b)我希望所有数据管理都通过同一平台(Netlify CMS)进行。

对于长形式问题,我很抱歉,我很感激您的建议。

reactjs mongodb gatsby netlify netlify-cms
1个回答
2
投票

你绝对可以使用Netlify Form,Function和Github API来完成这项工作。我为我的一个gatsby网站做了类似的事情,表格数据直接提交给Netlify功能。

如果您想利用Netlify Form的功能,如垃圾邮件预防和电子邮件通知,我认为它看起来像这样:

  • 设置你的Netlify Form
  • 设置一个听Netlify function事件的submission-created。在请求正文中,您将找到包含表单数据的payload对象,以及有关您站点的信息(如果您有一堆它们)。 Netlify有一个真正简化开发过程的package
  • 触发对Github API的调用,以便为该提交创建文件或更新包含所有提交的现有文件。
  • 此时,您可以设置netlifyCMS以读取该文件夹/文件的内容,并允许管理员查看/修改提交内容。

希望能帮助到你!

© www.soinside.com 2019 - 2024. All rights reserved.