提交Netlify表单后,如何创建Netlify CMS收集文件?

时间:2019-03-31 23:42:23

标签: reactjs mongodb gatsby netlify netlify-cms

我目前有一个GatsbyJS应用程序,该应用程序使用Netlify CMS(NCMS)进行内容管理,并使用Gi​​tHub的Netlify进行托管/部署。

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

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

在NCMS中创建Orders条目应该足够简单,只需使用关系小部件将Products条目合并到每个订单中即可。我要弄清楚的是,提交表单后如何在文件系统(回购)中创建JSON文件。我认为这对GitHub webhooks来说是可行的,因为NCMS在您的系统中创建文件时会这样做。

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

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

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

对长格式问题深表歉意,我感谢您的建议。

1 个答案:

答案 0 :(得分:2)

您绝对可以使用Netlify Form,Function和Github API来执行此操作。我为我的一个gatsby网站做过类似的事情,这些网站将表单数据直接提交给Netlify函数。

如果您想利用Netlify Form的功能(如垃圾邮件阻止和电子邮件通知),我想它会像这样:

  • 设置您的Netlify Form
  • 设置一个Netlify function来监听submission-created事件。在请求的正文中,您将找到一个payload对象,其中包含表单数据以及有关您的站点的信息(如果您有一堆的话)。 Netlify的package确实简化了开发过程。

  • 触发对Github API的调用,以为此提交创建文件或更新包含所有提交的现有文件。

  • 这时,您可以设置netlifyCMS来读取该文件夹/文件的内容,并允许管理员查看/修改提交的内容。

希望有帮助!