Loopbackjs 有多通关系,计数总是返回0

Loopbackjs 有多通关系,计数总是返回0,loopbackjs,Loopbackjs,我有一个公司表、一个地址表和一个CompanyAddresses表来规范多对多关系。环回可以很好地添加公司,向公司添加地址,我甚至可以使用API资源管理器使用(POST/companys/{id}/addresses/{fk})方法查询与公司关联的地址 但是,当我尝试获取与公司关联的所有地址(get/companys/{id}/addresses)时,返回的是一个空数组。另外,当我对某个公司拥有多少地址(GET/companys/{id}/addresses/count)进行计数时,我总是得到0

我有一个公司表、一个地址表和一个CompanyAddresses表来规范多对多关系。环回可以很好地添加公司,向公司添加地址,我甚至可以使用API资源管理器使用(POST/companys/{id}/addresses/{fk})方法查询与公司关联的地址

但是,当我尝试获取与公司关联的所有地址(get/companys/{id}/addresses)时,返回的是一个空数组。另外,当我对某个公司拥有多少地址(GET/companys/{id}/addresses/count)进行计数时,我总是得到0

我肯定我错过了一些非常微小的东西。我的数据源是postgresql

/* ----- common/models/companies.json ----- */

{
  "name": "Companies",
  "base": "User",
  "strict": true,
  "idInjection": false,
  "options": {
    "validateUpsert": true
  },
  "properties": {
      "companyName": {
      "type": "string",
      "required": true
   },
     "firstName": {
     "type": "string",
     "required": true
   },
    "lastName": {
      "type": "string",
      "required": true
   },
    "cellNumber": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {
    "addresses": {
      "type": "hasMany",
      "model": "Addresses",
      "foreignKey": "addressesid",
      "through": "CompaniesAddresses"
    }
  },
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "accessType": "EXECUTE",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW",
      "property": "create"
    },
    {
      "accessType": "READ",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW"
    },
    {
      "accessType": "WRITE",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW"
    }
  ],
  "methods": {}

/* ---- common/models/addresses.json ---- */

{
  "name": "Addresses",
  "base": "PersistedModel",
  "strict": true,
  "idInjection": false,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "streetaddress2": {
      "type": "string"
    },
    "phonenumber2": {
      "type": "string"
    },
    "phonenumber1": {
      "type": "string",
      "required": true
    },
    "zippostalcode": {
      "type": "string",
      "required": true
    },
    "stateprov": {
      "type": "string",
      "required": true
    },
    "streetaddress1": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
     "companies": {
       "type": "hasMany",
       "model": "Companies",
       "foreignKey": "companiesid",
       "through": "CompaniesAddresses"
    }
  },
  "acls": [
      {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW"
    }
  ],
  "methods": {}

/* ---- companiesaddresses.json ---- */
{
  "name": "CompaniesAddresses",
  "base": "PersistedModel",
  "strict": true,
  "idInjection": false,
  "options": {
    "validateUpsert": true
   },
  "properties": {
    "companiesid": {
      "type": "number",
      "id": true,
      "required": true
    },
    "addressesid": {
      "type": "number",
      "id": true,
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "addresses": {
      "type": "belongsTo",
      "model": "Addresses",
      "foreignKey": "addressesid"
    },
    "companies": {
      "type": "belongsTo",
      "model": "Companies",
      "foreignKey": "companiesid"
    }
  },
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW"
    }
  ],
  "methods": {}
}

/* ---- server/boot/model-config.json ---- */

{
  "_meta": {
    "sources": [
      "loopback/common/models",
      "loopback/server/models",
      "../common/models",
      "./models"
    ],
    "mixins": [
      "loopback/common/mixins",
      "loopback/server/mixins",
      "../common/mixins",
      "./mixins"
    ]
  },
  "User": {
    "dataSource": "db"
  },
  "AccessToken": {
    "dataSource": "db",
    "public": false
  },
  "ACL": {
    "dataSource": "db",
    "public": false
  },
  "RoleMapping": {
    "dataSource": "db",
    "public": false
  },
  "Role": {
    "dataSource": "db",
    "public": false
  },
  "Companies": {
    "dataSource": "pg",
    "public": true,
    "$promise": {},
    "$resolved": true
  },
  "Addresses": {
    "dataSource": "pg",
    "public": true,
    "$promise": {},
    "$resolved": true
  },
  "CompaniesAddresses": {
    "dataSource": "pg",
    "public": true,
    "$promise": {},
    "$resolved": true
  }
}

公司和地址中的外键如下所示:

**common/models/companys.json**
“关系”:{
“地址”:{
“类型”:“有许多”,
“型号”:“地址”,

“外键”:“addressesid”,公司和地址中的外键如下所示:

**common/models/companys.json**
“关系”:{
“地址”:{
“类型”:“有许多”,
“型号”:“地址”,
“外键”:“地址ID”,