我将 LoopBack 与 MongoDB 连接器一起使用。
型号:
申请工作:
{
"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 :(得分: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) {
});