2016-07-25 34 views
1

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

回答

1

没有真正理解你的使用情况,我看到两个潜在的架构探索:

  1. 单梯形实例:

    看看你是否可以设计你的数据使用继承并尝试把 中的所有站点一个关键实例。 IE你可以有一个父母 “发布”模型,然后每个站点“FooPost”,“BarPost”从帖子继承 。通过这种方式,您可以使用股票基石/猫鼬 关系机制和内置的CRUD引导程序。这里缺点 这种架构会让你的管理界面和数据模型更复杂,但我认为它是一个潜在的解决方案,将单个keystone实例“分区”到不同的站点。对于一个实例中的少数“站点”,这可能会更好地运行 ,因为更多的只是 会使数据模型和管理用户界面太复杂而无法使用。

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

    缺点:比较复杂管理UX,你必须前端自己手动分区,以保持数据分开,更复杂的数据结构使用了大量的继承

  2. 单独的梯形实例:

    一个轻量级的方式来分享不同的梯形实例之间的非关系型数据(像一个普通的标签列表)可能是刚刚引导的API包装为每一个“标签”模式并将API CRUD调用添加到每个keystone实例API。然后,您可以通过猫鼬挂钩调用CRUD API来维护跨网站的模型数据。有很多示例用于提升keystone CRUD API,并且您可以在模型的后期保存,后期删除或后期更新中进行api CRUD调用。

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

    优点:关注点分离,干净的数据模型,分区管理员屏幕(也许对于一些用例CON)

    缺点:需要同步的数据模型架构(你可以子模块共同梯形模型GitHub库和共享它在所有站点之间修复这个问题之前做过),更多的api和模式钩子代码,每个站点都有独立的管理员用户体验,更多的系统管理员可以运行并同步单独的实例

0

我不认为这是可能的,但如果它是一个参考集合,那么为什么不直接在它自己的网站上运行它,并让所有其他网站都为它查询数据呢?

我试着在同一个实例中运行两个站点一次。它会导致具有相同名称的所有模型在数据库中共享一个集合,这并不是一件好事,因为这意味着updates集合中keystone创建的集合将在应用程序之间以及任何用户之间共享(除非您致电用户在每个站点上模拟不同的东西)。这当然不是为了解决这个问题。