2016-08-21 29 views
0

我們的用例要求我們爲用戶(提供者和消費者)提供兩種不同的模型。因此,我們將用戶模型擴展爲消費者和提供者模型,但當提供者的AccessToken也開始爲消費者工作時,很快就會遇到麻煩。環回擴展訪問令牌模型導致問題

例如,讓我們假設提供者A的userId爲1,並且消費者A的userId爲1,如果提供者A登錄並接收到AccessToken,則他可以通過使用他的accessToken查詢消費者模型來提取關於消費者A的信息。這可能會造成災難。 ctx.req.accessToken.userId在消費者模型中爲消費者和提供者令牌返回1。

我們試着將AccessToken模型擴展爲AccessTokenProvider和AccessTokenConsumer。下面是AccessTokenConsumer

"relations": { 
"user": { 
"type": "belongsTo", 
"model": "consumer", 
"foreignKey": "userId" } } 

和消費模式

"relations": { 
    "accessTokens": { 
     "type": "hasMany", 
     "model": "AccessTokenConsumer", 
     "foreignKey": "userId", 
     "options": { 
     "disableInclude": true 
     } 
    } } 

然而,模型關係,現在ctx.req.accessToken返回null,並註銷其餘功能給出「找不到的accessToken」錯誤

回答

0

我在這裏嘗試了IvanZh的答案Multiple User child Models problem

在node_modules/loopback/common/models/user.js中,在之後加model: userModel.modelName即可。User.prototype.createAccessToken方法。然後將模型屬性添加到access_token.json。您可能不得不將表重新遷移到數據庫。

您的模型名稱現在會附加到ctx.req.accessToken.model,您可以使用條件來確保只調用正確的模型類型。

請注意:如果更新Loopback,將會覆蓋此項。坦率地說,這個特性應該被內置到Loopback中,因爲它的缺席並沒有增加已經被文檔缺陷損害的強大框架的魅力。