如何在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 其中属于用户 其中XYZ2属于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稍微复杂一点,但是可以让你更灵活的自定义权限控制。它更适合复杂的情况。