繁体   English   中英

根据 cube.js 中的分层用户 ID 动态过滤数据

[英]Filter data dynamically based on a hierarchical user id in cube.js

我有两个名为 Writers 和 Publications 的表,其中有一个外键publications.writer_id = writers.id

作家

编号(整数) parent_id(整数) 角色(可变字符) 名称(可变字符) 路径(ltree)
1个 行政 名字 姓氏
2个 1个 编辑 匿名 匿名 1.2
3个 2个 WEB 编辑 Maisy 挠痒痒 1.2.3
4个 2个 WEB 编辑 杰克豆茎 1.2.4
5个 3个 WEB 校对员 晴天雷 1.2.3.5

刊物

编号(整数) writer_id (FK) publication_name (varchar) 字长(整数) 发布(日期时间)
1个 2个 我的第一本杂志 6000 2019-09-09 09:00:00
2个 2个 我的第二本杂志 6000 2019-09-16 09:00:00
3个 3个 我的第一篇文章 1000 2019-09-23 09:00:00
4个 4个 我的第一篇文章 1500 2019-09-23 09:00:00
5个 4个 我的第二篇 600 2019-10-01 09:00:00
6个 5个 我的第一件作品 600 2020-10-01 09:00:00

我想在cube.js Developer Playground 中进行概念验证以显示各种图表。 是否可以根据 user_id 动态过滤,以便他们只能访问等于或在其子树中的内容,即

  • 如果管理员/编辑正在使用,他们可以看到所有的出版物
  • 如果 WEB EDITOR ( writers.id writers.id=4 ) 正在使用该应用程序,他们只能看到自己的文章 ( publications.id in (4,5) )
  • 如果 WEB EDITOR ( writers.id writers.id=3 ) 正在使用该应用程序,他们可以看到他们的出版物和 WEB PROOFREADER 的出版物 ( publications.id in (3,6) )
  • WEB PROOFREADER 应该只能看到他们的出版物 ( publications.id=6 )

这些是我到目前为止建立的模型

cube(`Writers`, {
  sql: `SELECT * FROM public.writers`,
  
  preAggregations: {},
  
  joins: {

    Publications:{
      sql: `${CUBE}.id = ${Publication}.writer_id`,
      relationship: `hasMany`
    }
    
  },
  
  measures: {
    count: {
      type: `count`,
      drillMembers: [id, name, created]
    }
  },
  
  dimensions: {
    id: {
      sql: `id`,
      type: `number`,
      primaryKey: true
    },

 role: {
          sql: `role`,
          type: `string`,
        },
};





cube(`Publications`, {
  sql: `SELECT * FROM public.publications`,
  
  preAggregations: {},
  
  joins: {

    Writer:{
      sql: `${CUBE}.writer_id = ${Writers}.id`,
      relationship: `hasOne`
    }
    
  },
  
  measures: {
    count: {
      type: `count`,
      drillMembers: [id, name, created]
    }
  },

 dimensions: {
     id: {
          sql: `id`,
          type: `number`,
          primaryKey: true
        },

     wordLength: {
              sql: `word_length`,
              type: `number`,
            },
};

我知道有filterssegments ,但这些似乎是 static。有什么方法可以传递 writer_id 来动态过滤相关数据吗? (我以前对JS一无所知)

我认为您可以使用 id 过滤器从前端应用程序查询多维数据集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM