wwwision/projection-playground

Neos后端模块,允许实时创建和测试ESCR投影

资助包维护!
bwaidelich
Paypal

安装: 0

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

公开问题: 5

语言:CSS

类型:neos-package


README

Neos后端模块,允许实时创建和测试ESCR投影

使用说明

通过composer安装

composer require wwwision/projection-playground

注意 在编写本文时,neos/contentrepository-core包尚未在packagist上可用。您可以从GitHub下载到您的分发文件夹:https://github.com/neos/neos-development-collection/tree/9.0/Neos.ContentRepository.Core,然后通过composer require wwwision/projection-playground neos/contentrepository-core:@dev 安装一切。

之后,如果您以管理员身份登录Neos后端,您可以通过/neos/administration/projection-playground导航到新的后端模块并开始使用。

投影

投影逻辑可以用JavaScript编写。此包支持EventStoreDB投影语法的子集(请参阅文档

示例投影

计数所有事件

fromAll()
.when({
    $init: () => ({count: 0}),
    $any: (s, e) => {
        s.count ++;
    }
})

计数创建的节点类型

...并将结果转换以按使用频率排序

fromAll()
.when({
    NodeAggregateWithNodeWasCreated: (s, e) => {
        const nodeType = e.body.nodeTypeName;
        s[nodeType] = (s[nodeType] ?? 0) + 1;
    }
}).transformBy(s => Object.fromEntries(Object.entries(s).sort((a, b) => b[1] - a[1])))

按星期几聚合事件

...并将结果转换以按最受欢迎的日期排序

fromAll()
.when({
    $any: (s, e) => {
        const timestamp = e.metadataRaw['initiatingTimestamp'];
        if (!timestamp) {
            return;
        }
        const date = new Date(timestamp);
        const weekDay = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][date.getDay()];
        s[weekDay] = (s[weekDay] ?? 0) + 1;
    }
}).transformBy(s => Object.fromEntries(Object.entries(s).sort((a, b) => b[1] - a[1])))

免责声明

此项目未得到Event Store Ltd.的支持。