wwwision / projection-playground
Neos后端模块,允许实时创建和测试ESCR投影
0.2.0
2023-04-26 21:56 UTC
Requires
Requires (Dev)
- roave/security-advisories: dev-latest
- dev-main
- 0.2.0
- 0.1.0
- dev-dependabot/npm_and_yarn/Resources/Private/Svelte/semver-5.7.2
- dev-dependabot/npm_and_yarn/Resources/Private/Svelte/qs-and-express-6.11.0
- dev-dependabot/npm_and_yarn/Resources/Private/Svelte/json5-1.0.2
- dev-dependabot/npm_and_yarn/Resources/Private/Svelte/minimist-1.2.8
- dev-dependabot/npm_and_yarn/Resources/Private/Svelte/decode-uri-component-0.2.2
This package is auto-updated.
Last update: 2024-09-13 07:45:53 UTC
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.的支持。