2013-10-05 27 views
1

通過構造被設置考慮用戶模型中的一個節點應用與JugglingDB防止在jugglingDB

User = schema.define('User', { 
    name  : String, 
    email  : String, 
    API_KEY : String, 
    created : {type: Date, default: Date.now}, 
}); 

我想API_KEY屬性爲「只讀」的模型屬性。所以下面的數據:

var data = { 
    name  : 'Test account', 
    email : '[email protected]', 
    API_KEY : 'Some key' 
} 

被接受爲:

var data = { 
    name  : 'Test account', 
    email : '[email protected]' 
} 

在:

var user = new User(data); 

所以這種方式僅服務器可以爲用戶創建一個API_KEY。這可能嗎?

回答

1

您可以通過使用掛鉤來完成此操作。特別是你可以使用一個beforeCreatebeforeUpdate鉤子,每當一個新用戶被創建或者它的屬性被更新時,鉤子就會被執行。

例如,你可以指定在用戶創建一個服務器生成API密鑰,並確保它不被使用下面的掛鉤日後發生變化:

User.beforeCreate = function(next, data) { 
    data.API_KEY = server_generate_api_key(); 
    next(); 
}; 

User.beforeUpdate = function(next, data) { 
    delete data.API_KEY; 
    next(); 
}; 

或者,你可以看着beforeSave鉤。