2015-02-11 65 views
2

我想用一個鉤子來對一行進行訪問控制,以便用戶只能訪問他們自己的行。掛鉤會添加一個附加的where子句以確保用戶是該行的所有者(例如:WHERE ownerId = user.id)。如何將上下文添加到Sequelize掛鉤?

問題是,我如何將用戶ID傳遞給Sequelize,以便在鉤子觸發時鉤子具有它?我瀏覽過文檔,如果可能的話,這對我來說並不明顯。

感謝

參考:http://sequelize.readthedocs.org/en/latest/docs/hooks/

回答

3

要添加上下文可以包括任何你在選擇喜歡的對象。例如,假設您正在使用Model.findAll()。你會設置你的選擇是這樣的:

options = { 
    attributes: ['id', 'column1', 'column2'], 
    where: { someColumn: 'aValue' } 
} 

options.context = 'foo'; 

然後在鉤你就可以訪問options.context並使用它,只要你喜歡。當然,你可能不應該使用Sequelize使用的任何「保留」字來過濾查詢。

+0

「上下文」在Sequelize文檔中似乎不受支持:http://docs.sequelizejs.com/class/lib/model.js~Model.html#static-method-create它不在Sequelize中打字稿的定義,這意味着使用這個選項不會讓你的代碼編譯:https://github.com/types/sequelize/blob/master/lib/model.d.ts#L511-L522是否有任何其他建議關於如何使這項工作? – modulitos 2017-12-18 20:39:08

相關問題