2017-03-22 71 views
0

我使用LoopBackMongoDB連接器。在2級屬性上篩選

型號:

一份工作

應用:

{ 
    "name": "application", 
    "plural": "applications", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
     "validateUpsert": true 
    }, 
    "properties": { 
     "jobId": { 
      "type": "string", 
      "required": true 
     }, 
     "staffId": { 
      "type": "string", 
      "required": true 
     } 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": {} 
} 

工作:

{ 
    "name": "job", 
    "plural": "jobs", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
     "validateUpsert": true 
    }, 
    "properties": { 
     "title": { 
      "type": "string", 
      "required": true 
     } 
    }, 
    "validations": [], 
    "relations": { 
     "applications": { 
      "type": "hasMany", 
      "model": "application", 
      "foreignKey": "jobId", 
      "primaryKey": "id" 
     } 
    }, 
    "acls": [], 
    "methods": {} 
} 

如果用戶的ID(STAFFID是)是應用程序數組中,我需要不顯示給用戶這個工作。

例子: 我們與應用

[ 
    { 
    id: 1, 
    title: "Job 1", 
    applications: [ 
     { 
     jobId: 1, 
     staffId: 1 
     }, 
     { 
     jobId: 1, 
     staffId: 2 
     } 
    ] 
    }, 
    { 
    id: 2, 
    title: "Job 2", 
    applications: [ 
     { 
     jobId: 2, 
     staffId: 1 
     } 
    ] 
    } 
] 

的工作陣列如果用戶的ID(STAFFID是)爲2,則用戶只能看到 「作業2」。

我想是這樣的:

/jobs?filter[include][applications]&filter[where not][applications][elemMatch][staffId]=2 

但它不工作。

有什麼建議嗎?

謝謝。

回答

0

在此開發狀態下,您無法使用REST過濾2級屬性:https://github.com/strongloop/loopback/issues/517(缺陷至2014年)。

你可以做的反而是定義一個定製表情的方法,將包含類似:

var userId = 2; 
    Jobs.find({ 
      include: { 
       relation: 'applications', 
         scope: { 
          where: {staffId: {eq: userId}}, 
         } 
        } 
    }, function (err, jobs) { 

    }); 
+0

謝謝您的回答,但我需要過濾的工作,而不是應用程序 –