2016-11-10 21 views
0

我正在爲遠程智能設備創建警報跟蹤管理系統。使用nodejs和mongodb。這種想法是這樣的,當設備發出警報時,我希望有權限的用戶在登錄後可以看到警報錯誤(或錯誤歷史記錄)。假設我有三種類型的用戶,第一種類型只能跟蹤一種設備組,第二個設備組和第三個設備。對於演示版本,我想在我的mongodb中創建一個用戶,並添加3種類型的設備組,並根據訪問者的具體情況爲每個設備組分配true。我已經有登錄系統,但我想要一些建議如何檢查用戶是否有權訪問組1,然後他可以在登錄後重定向到特定的路線等。我認爲創建一個函數,檢查以某種方式'if(user nameOfgroup1是真的),然後重定向到nameOfgroup1視圖'但不知道如何編寫此條件的代碼。我的用戶架構:如何檢查訪問用戶的類型(Nodejs和mongodb)

var userSchema = mongoose.Schema({ 
    local: { 
     username: String, 
     password: String, 
     access:[{ 

     nameOfgroup1: String, 
     available: Boolean 
    }, 
    { 
     nameOfgroup2: String, 
     available: Boolean 

    }, 
    {  
     nameOfgroup3: String, 
     available: Boolean 

    }]}}); 

回答

0

存儲用戶應該有權訪問的組ID的數組會更簡單。這樣,您將來可以輕鬆地添加更多的組,並且還可以輕鬆地檢查給定的組。

例如,如果用戶在數據庫中的文檔會是這樣的:

{ "username" : "name", "groups" : [ 0, 2 ] } 

那麼很容易檢查他有哪些組訪問還要檢查特定的組:

function check(user, group) { 
    return user.groups.indexOf(group) > -1; 
} 

也可以很容易地搜索用戶具有訪問給定組中的數據庫:

db.users.find({groups:2}); 

而不是數字,你可以使用名稱或ObjectIds或任何方便你。

+0

謝謝!我的這個解決方案對我的情況很好。 – Vytautas