我正在开发一个相当简单的AEM组件,但是我仍然无法理解最佳实践。
例如,假设我要存储一组Link
个对象,每个对象都包含一个 href 和 title 属性。
这可以通过2种方式存储:
[1] 每个链接都作为一个单独的节点:
component
├── link_1
│ ├── .href = "#1"
│ └── .title = "T1"
└── link_2
├── .href = "#2"
└── .title = "T2"
[2] 作为component
下的JSONArray属性:
component
└── .links = [{"href":"#1", "title":"T1"}, {"href":"#2", "title":"T2"}]
写完这些之后,我想我回答了我自己的问题...
即使选项 [2] 对组件开发很有吸引力,但是当JCR / Sling数据建模已经提供了该层次结构时,这似乎是多余的。
我正确理解了吗?
我知道可以将Resource
导出为JSON,但是可以从JSON导入/创建SyntheticResource
吗?
SyntheticResource
link
节点存储在一个单独的单独的用于组织的父节点下吗? component
└── links
├── link_1
│ ├── .href = "#1"
│ └── .title = "T1"
└── link_2
├── .href = "#2"
└── .title = "T2"
答案 0 :(得分:5)
我建议在jcr中创建节点。存储为json可能会禁止您使用jcr / aem提供的许多功能(或使它们复杂化),例如索引,搜索,事件处理,访问控制等。
尽管您的示例很简单,并且上面列出的某些内容可能不适用,但是如果有人将更复杂的数据存储为json,则会产生问题。