如何使用环回包含关系过滤数据?
How to filter data using loopback include relation?
我有三个数据库 table,例如员工、部门和 leave_details。
员工和部门使用外键 department_id 建立关系。员工和 leave_details 使用外键 user_id 建立关系
我需要从 leave_details where department_id :x
获取数据
我的代码就是这样
leave_details.json
"relations": {
"employee": {
"type": "belongsTo",
"model": "employee",
"foreignKey": "user_id"
},
和employee.json
"properties": {"department_id": {
"type": "number"
}}
"relations": {
"department": {
"type": "belongsTo",
"model": "department",
"foreignKey": "department_id"
},}
和leave_details.js
filter = {
include: [{ relation: 'employee', scope: { where: { department_id: 5} } }],
fields: ['id', 'user_id', 'requested_time', 'leave_type', 'leave_start_time', 'leave_status', 'approved_by', 'approval_time', 'leave_end_time'],
order: 'requested_time DESC',
};
你能帮帮我吗
迄今为止,使用环回过滤器是不可能的,您需要使用数据库级查询sql/mongodb聚合等
https://github.com/strongloop/loopback/issues/517
在不破坏环回逻辑的情况下进行复杂查询最方便的是mongodb聚合查询,如果你开发一个mixin,你会得到这样的东西:
let filter = {
where:{},
include:[],
...
aggregate: [{
$match: {
period: {
$lt: period || new Date()
}
}
},
{
$sort: {
period: -1
}
},
...]
};
或者使用例如这个
https://github.com/BoLaMN/loopback-mongo-aggregate-mixin
我有三个数据库 table,例如员工、部门和 leave_details。 员工和部门使用外键 department_id 建立关系。员工和 leave_details 使用外键 user_id 建立关系 我需要从 leave_details where department_id :x
获取数据我的代码就是这样
leave_details.json
"relations": {
"employee": {
"type": "belongsTo",
"model": "employee",
"foreignKey": "user_id"
},
和employee.json
"properties": {"department_id": {
"type": "number"
}}
"relations": {
"department": {
"type": "belongsTo",
"model": "department",
"foreignKey": "department_id"
},}
和leave_details.js
filter = {
include: [{ relation: 'employee', scope: { where: { department_id: 5} } }],
fields: ['id', 'user_id', 'requested_time', 'leave_type', 'leave_start_time', 'leave_status', 'approved_by', 'approval_time', 'leave_end_time'],
order: 'requested_time DESC',
};
你能帮帮我吗
迄今为止,使用环回过滤器是不可能的,您需要使用数据库级查询sql/mongodb聚合等
https://github.com/strongloop/loopback/issues/517
在不破坏环回逻辑的情况下进行复杂查询最方便的是mongodb聚合查询,如果你开发一个mixin,你会得到这样的东西:
let filter = {
where:{},
include:[],
...
aggregate: [{
$match: {
period: {
$lt: period || new Date()
}
}
},
{
$sort: {
period: -1
}
},
...]
};
或者使用例如这个 https://github.com/BoLaMN/loopback-mongo-aggregate-mixin