Javascript 中的 JCR_SQL2 示例?

Ale*_*x R -2 jcr aem

我在寻找使用AEM JCR_SQL2 API在服务器端的一些示例代码Javascript不是Java),即代码与启动use(function() { ... }),并通过加载data-sly-use=${...}

所有 Google 结果都是 100% 基于 Java 的示例。

我已经尝试过:谷歌“JCR-SQL2 js 示例”和变体。

预期结果:Javascript 中的示例代码。

实际结果:大量 Java 代码 :-(

Ale*_*ndt 5

如果你想使用服务器端 JS(我不推荐),那么你只需要转换 Java 示例的语法。无论如何,您都可以与 Java 对象进行交互。所以 JS 和 Java 的 API 是一样的。如果您有一个 HTL 组件并通过 Use-API 调用 JS,那么在您的 JS 范围中已经定义了几个对象。

https://helpx.adobe.com/experience-manager/htl/using/global-objects.html

这是一个使用 SQL-2 查询搜索所有核心组件的 JS 示例:

use(function () {
    var pageName = currentPage.name;
    var title = currentPage.properties.get("jcr:title");
    var resourceName = granite.resource.name;
    var resourceTitle = properties.get("jcr:title");

    var componentList = [];
    var componentIter = resolver.findResources("SELECT * FROM [cq:Component] AS c WHERE ISDESCENDANTNODE(c, '/apps/core/wcm')", "JCR-SQL2");
    while (componentIter.hasNext()) {
        var compoenentRes = componentIter.next();
        componentList.push(compoenentRes.getPath());
    }

    return {
        pageName: pageName,
        title: title,
        resourceName: resourceName,
        componentList: componentList
    };
});
Run Code Online (Sandbox Code Playgroud)

使用它的组件 HTL 代码是:

<div data-sly-use.info="info.js">
    <p>page name: ${info.pageName}</p>
    <p>title: ${info.title}</p>
    <p>resourceName: ${info.resourceName}</p>
    <p>core components: </p>
    <ul data-sly-list.component="${info.componentList}">
        <li>${component}
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

PS:您可能知道,但在这里您可以找到用于 JS 的 Use-API:https : //helpx.adobe.com/experience-manager/htl/using/use-api-javascript.html