gpt4 book ai didi

javascript - Keystone.js : use one model in multiple sites

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:55 25 4
gpt4 key购买 nike

我需要使用 Keystone.js(站点网络)创建多个站点。我有一个引用集合,应该在每个站点上使用它作为与其他网络站点中的模型的关系。它就像在所有网络站点上使用的通用标签列表。希望你明白我的意思。抱歉我的英语不好。

最佳答案

在没有真正理解您的用例的情况下,我看到了两种可以探索的潜在架构:

  1. 单个梯形校正实例:

    看看您是否可以设计数据以使用继承并尝试放置一个 keystone 实例中的所有站点。即你可以有一个 parent “Post”模型,然后每个站点继承“FooPost”、“BarPost”从帖子。这样你就可以使用库存的 keystone/mongoose关系机制和内置 CRUD Bootstrap 。缺点在这里这种架构会让你的管理 UI 和数据模型更加完善吗?复杂,但我认为它是“分区”的潜在解决方案将单个 keystone 实例放入不同的站点。这可能会更好对于一个实例上的几个“站点”来说,更多的话就只是使数据模型和管理用户体验过于复杂而无法使用。

    优点:可以使用 keystone 股票 CRUD/关系

    缺点:更复杂的管理用户体验,您必须自己手动对前端进行分区以保持数据独立,使用大量继承的更复杂的数据结构

  2. 单独的梯形校正实例:

    在单独的 keystone 实例(如公共(public)标签列表)之间共享非关系数据的一种轻量级方法可能是将 api 包装器引导到每个站点的“标签”模型,并向每个 keystone 实例 API 添加 api CRUD 调用。然后,您可以通过 mongoose hooks 调用 CRUD api 来跨站点维护模型数据。有很多用于 boostrap keystone CRUD api 的示例,您可以在模型的保存后、删除后或更新后进行 api CRUD 调用。

    建立关系模型会更复杂。我会在每个站点上创建一个“链接”模型,该模型只不过是一个 URL 字段和一个 _id。在您尝试与之共享关系的每个站点上的模型中设置一对多关系,并将链接模型包装在 CRUD api 中。通过这种方式,您可以将模型“链接”在一起,并且它们将在管理页面上呈现为可点击的链接。您必须编写相当数量的钩子(Hook)和 API 调用,但我认为对于可以允许某些事务数据同步容差的系统来说,这是一个潜在可行的架构(即,您不会尝试这种类型的架构来处理任何需要超严格的架构)交易完整性,但对于社交媒体来说可能没问题)。

    优点:关注点分离、更清晰的数据模型、分区管理屏幕(对于某些用例来说可能是缺点)

    缺点:需要同步数据模型架构(您可以对通用 keystone 模型 github 存储库进行子模块,并在所有站点之间共享它来解决这个问题,我之前已经这样做过),更多 api 和架构 Hook 代码,每个站点都有一个单独的管理员用户体验,更多系统管理员工作来运行和同步单独的实例

关于javascript - Keystone.js : use one model in multiple sites,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38572498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com