0

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

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

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

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

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

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

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

4

1 回答 1

2

你绝对可以使用 Netlify Form、Function 和 Github API 做到这一点。我为我的一个 gatsby 网站做了类似的事情,其中​​表单数据直接提交给 Netlify 函数。

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

  • 设置您的Netlify 表单
  • 设置一个监听事件的Netlify 函数submission-created。在请求的正文中,您会找到一个payload包含表单数据的对象,以及有关您网站的信息(如果您有一堆)。Netlify 有一个可以真正简化开发过程。

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

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

希望能帮助到你!

于 2019-04-01T05:59:21.553 回答