如何在cube js中根据用户名获取数据
How to get data based on username in cube js
定义
我已将我的多维数据集 js 后端连接到 mongodb。我通过以下方式将文档存储在我的 mongo 数据库中。
这是我的文档在 MONGO 数据库中的样子
{
anonymousId: "bdee014b-09e1-4d79-bcf1-c3cc91cd4101"
user: "abc"
url: "/index"
eventType: "pageView"
date: "22-08-2020"
time: "20:33:9"
data: "some data"
}
现在让我们假设我的 mongodb 集合中有 10 个文档,其中 5 个文档属于 user: "abc" 和 5 个文档属于 用户:“xyz”.
我现在如何在浏览器控制台中获取数据如下所示
{
annotation: {measures: {,…},…}
data: [{Events.user: "xyz",…}, {Events.user: "xyz",…}, {Events.user: "xyz",…},…]
0: {Events.user: "xyz",…}
1: {Events.user: "xyz",…}
2: {Events.user: "xyz",…}
3: {Events.user: "abc",…}
4: {Events.user: "abc",…}
5: {Events.user: "xyz",…}
lastRefreshTime: "2020-08-22T15:23:53.547Z"
query: {measures: ["Events.pageView", "Events.buttonClick"], dimensions: ["Events.user",
"Events.allData"],…}
refreshKeyValues: [[{unix_timestamp(): 1598109833}]]
usedPreAggregations: {}
}
在这里你可以在数据数组中看到我从立方体 js 后端返回的响应有 6 个对象 4 其中属于用户 其中XYZ和2属于ABC.
我的 CUBE.JS 架构
cube(`Events`, {
sql: `SELECT * FROM test.events`,
refreshKey: {
sql: `SELECT UNIX_TIMESTAMP()`
},
measures: {
count: {
type: `count`
},
pageView: {
type: `count`,
filters: [
{ sql: `${eventType} = 'pageView'` }
]
},
buttonClick: {
type: `count`,
filters: [
{ sql: `${eventType} = 'buttonClicked'` }
]
}
},
dimensions: {
anonymousId: {
sql: `anonymousId`,
type: `string`
},
url: {
sql: `url`,
type: `string`
},
user: {
sql: `user`,
type: `string`
},
allData: {
sql: `data`,
type: `string`
},
eventType: {
sql: `eventType`,
type: `string`
},
referrer: {
sql: `referrer`,
type: `string`
},
}
});
问题
我如何分离或者我们可以说组数据取决于用户。我的意思是我希望数据为两个不同用户的 return 两个数组。比方说,如果 xyz 有 2 个文档,那么应该 returned 并且 abc 有 4 个文档4 个文档的数组应该 returned.
它们不应 return 合并。 abc 的数据应return单独编辑,xyz 的数据应return单独编辑。
2 位用户应维护 2 个不同的阵列
预期
我们编写模式以实现此行为的技巧或方法,
您可以使用User Context or queryTransformer or Multitenant Compile Context,这三个函数可以让您实现基于授权数据的数据访问。
queryTransformer稍微复杂一点,但是可以让你更灵活的自定义权限控制。它更适合复杂的情况。
定义
我已将我的多维数据集 js 后端连接到 mongodb。我通过以下方式将文档存储在我的 mongo 数据库中。
这是我的文档在 MONGO 数据库中的样子
{
anonymousId: "bdee014b-09e1-4d79-bcf1-c3cc91cd4101"
user: "abc"
url: "/index"
eventType: "pageView"
date: "22-08-2020"
time: "20:33:9"
data: "some data"
}
现在让我们假设我的 mongodb 集合中有 10 个文档,其中 5 个文档属于 user: "abc" 和 5 个文档属于 用户:“xyz”.
我现在如何在浏览器控制台中获取数据如下所示
{
annotation: {measures: {,…},…}
data: [{Events.user: "xyz",…}, {Events.user: "xyz",…}, {Events.user: "xyz",…},…]
0: {Events.user: "xyz",…}
1: {Events.user: "xyz",…}
2: {Events.user: "xyz",…}
3: {Events.user: "abc",…}
4: {Events.user: "abc",…}
5: {Events.user: "xyz",…}
lastRefreshTime: "2020-08-22T15:23:53.547Z"
query: {measures: ["Events.pageView", "Events.buttonClick"], dimensions: ["Events.user",
"Events.allData"],…}
refreshKeyValues: [[{unix_timestamp(): 1598109833}]]
usedPreAggregations: {}
}
在这里你可以在数据数组中看到我从立方体 js 后端返回的响应有 6 个对象 4 其中属于用户 其中XYZ和2属于ABC.
我的 CUBE.JS 架构
cube(`Events`, {
sql: `SELECT * FROM test.events`,
refreshKey: {
sql: `SELECT UNIX_TIMESTAMP()`
},
measures: {
count: {
type: `count`
},
pageView: {
type: `count`,
filters: [
{ sql: `${eventType} = 'pageView'` }
]
},
buttonClick: {
type: `count`,
filters: [
{ sql: `${eventType} = 'buttonClicked'` }
]
}
},
dimensions: {
anonymousId: {
sql: `anonymousId`,
type: `string`
},
url: {
sql: `url`,
type: `string`
},
user: {
sql: `user`,
type: `string`
},
allData: {
sql: `data`,
type: `string`
},
eventType: {
sql: `eventType`,
type: `string`
},
referrer: {
sql: `referrer`,
type: `string`
},
}
});
问题
我如何分离或者我们可以说组数据取决于用户。我的意思是我希望数据为两个不同用户的 return 两个数组。比方说,如果 xyz 有 2 个文档,那么应该 returned 并且 abc 有 4 个文档4 个文档的数组应该 returned.
它们不应 return 合并。 abc 的数据应return单独编辑,xyz 的数据应return单独编辑。
2 位用户应维护 2 个不同的阵列
预期
我们编写模式以实现此行为的技巧或方法,
您可以使用User Context or queryTransformer or Multitenant Compile Context,这三个函数可以让您实现基于授权数据的数据访问。
queryTransformer稍微复杂一点,但是可以让你更灵活的自定义权限控制。它更适合复杂的情况。