首页 > 解决方案 > loopback hasMany 通过给出空数组

问题描述

我有以下定义的模型:

学院

{
  "name": "academy",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "id": {
      "type": "number",
      "required": true
    },
    "name": {
      "type": "string",
      "required": true
    },
    "created": {
      "type": "date"
    },
    "updated": {
      "type": "date"
    },
    "academy_version_id": {
      "type": "number",
      "required": true
    },
    "description": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {
    "versions": {
      "type": "hasMany",
      "model": "academy_version",
      "foreignKey": "academy_id",
      "through": "academy_has_versions"
    }
  },
  "acls": [],
  "methods": {}
}

学院版

        {
      "name": "academy_version",
      "base": "PersistedModel",
      "idInjection": true,
      "options": {
        "validateUpsert": true
      },
      "properties": {
        "id": {
          "type": "number",
          "required": true
        },
        "name": {
          "type": "string",
          "required": true
        },
        "created": {
          "type": "date"
        },
        "updated": {
          "type": "date"
        }
      },
      "validations": [],
      "relations": {
        "academies": {
          "type": "hasMany",
          "model": "academy",
          "foreignKey": "academy_version_id",
          "through": "academy_has_versions"
        }
      },
      "acls": [],
      "methods": {}
    }

academy_has_versions

{
  "name": "academy_has_versions",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "id": {
      "type": "number",
      "required": true
    },
    "academy_id": {
      "type": "number",
      "required": true
    },
    "academy_version_id": {
      "type": "number"
    }
  },
  "validations": [],
  "relations": {
    "academy": {
      "type": "belongsTo",
      "model": "academy",
      "foreignKey": "academy_id"
    },
    "academy_version": {
      "type": "belongsTo",
      "model": "academy_version",
      "foreignKey": "academy_version_id"
    }
  },
  "acls": [],
  "methods": {}
}

现在你可以看到我的academy模型hasMany通过了academy_has_versions

当我尝试请求这个时,我得到以下结果:

在此处输入图像描述

如您所见,我得到一个空数组(版本)

这是不正确的,因为我的数据库如下所示:

academy_has_versions

在此处输入图像描述

学院版

在此处输入图像描述

那么谁能告诉我我做错了什么?

标签: loopbackjsloopback

解决方案


我找不到错误,但我建议你试试这个:

  1. 从所有模型中删除“id”属性,因为 idInjection 设置为 true。
  2. 移除外键对应的属性。
  3. 从学院模型中删除 academy_version_id 属性,因为在关系中没有意义。

学院

{
  "name": "academy",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string",
      "required": true
    },
    "created": {
      "type": "date"
    },
    "updated": {
      "type": "date"
    },
    "description": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {
    "versions": {
      "type": "hasMany",
      "model": "academy_version",
      "foreignKey": "academy_id",
      "through": "academy_has_versions"
    }
  },
  "acls": [],
  "methods": {}
}

学院版

{
      "name": "academy_version",
      "base": "PersistedModel",
      "idInjection": true,
      "options": {
        "validateUpsert": true
      },
      "properties": {
        "name": {
          "type": "string",
          "required": true
        },
        "created": {
          "type": "date"
        },
        "updated": {
          "type": "date"
        }
      },
      "validations": [],
      "relations": {
        "academies": {
          "type": "hasMany",
          "model": "academy",
          "foreignKey": "academy_version_id",
          "through": "academy_has_versions"
        }
      },
      "acls": [],
      "methods": {}
    }

academy_has_versions

{
  "name": "academy_has_versions",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {},
  "validations": [],
  "relations": {
    "academy": {
      "type": "belongsTo",
      "model": "academy",
      "foreignKey": "academy_id"
    },
    "academy_version": {
      "type": "belongsTo",
      "model": "academy_version",
      "foreignKey": "academy_version_id"
    }
  },
  "acls": [],
  "methods": {}
}

推荐阅读