У меня есть таблица компаний, таблица адресов и таблица businessadresses для нормализации отношения многих к многим. Loopback работает отлично, чтобы добавить компанию, добавить адрес в компанию, и я даже могу запросить с помощью API explorer адрес, связанный с компанией, используя метод POST/Companies/{id}/addresses/{fk}.Имеет много сквозных отношений, count всегда возвращает 0
Однако, когда я пытаюсь получить все адреса, связанные с компанией (GET/Companies/{id}/addresses), я возвращаю пустой массив. Кроме того, когда я выполняю подсчет количества адресов конкретной компании (GET/Companies/{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
}
}