我目前有一个GatsbyJS应用程序,该应用程序使用Netlify CMS(NCMS)进行内容管理,并使用GitHub的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)进行。
对长格式问题深表歉意,我感谢您的建议。
答案 0 :(得分:2)
您绝对可以使用Netlify Form,Function和Github API来执行此操作。我为我的一个gatsby网站做过类似的事情,这些网站将表单数据直接提交给Netlify函数。
如果您想利用Netlify Form的功能(如垃圾邮件阻止和电子邮件通知),我想它会像这样:
设置一个Netlify function来监听submission-created
事件。在请求的正文中,您将找到一个payload
对象,其中包含表单数据以及有关您的站点的信息(如果您有一堆的话)。
Netlify的package确实简化了开发过程。
触发对Github API的调用,以为此提交创建文件或更新包含所有提交的现有文件。
希望有帮助!