簡體   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