首页 > 解决方案 > 如何使用环回包含关系过滤数据?

问题描述

我有三个数据库表,例如员工、部门和 leave_details。员工和部门使用外键department_id 有关系。也使用外键user_id 员工和leave_details 有关系我需要从leave_details 中获取数据,其中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',
  };

你能帮助我吗

标签: node.jsloopbackjsloopback

解决方案


迄今为止,使用环回过滤器是不可能的,您需要使用数据库级查询 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


推荐阅读