定义 Loopback.io belongsTo 关系的正确方法

correct way to define Loopback.io belongsTo relationship

我在 2 个 Loopback 模型之间有一个简单的 has_many-belongst_to 关系:

{
  "name": "ApiUser",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "postgresql": {
      "table": "users"
    },
    "validateUpsert": true
  },
  "properties": {
    "id": {
      "type": "string",
      "id": true,
      "required": true,
      "defaultFn": "uuid",
      "postgresql": {
        "dataType": "uuid"
      }
    },
    "email": {
        ...

{
  "name": "ShopifyAccount",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "api_key": {
      "type": "string",
      "required": true
    },
    "password": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "orders": {
      "type": "hasMany",
      "model": "ShopifyOrder",
      "foreignKey": ""
    },
    "user": {
      "type": "belongsTo",
      "model": "ApiUser",
      "foreignKey": "userid"
    }
  },
  "acls": [],
  "methods": {}
}

当我 运行 自动迁移时,shopifyaccount table 已创建,但看起来很奇怪:

  Column       |  Type   |                          Modifiers                          

-------------------+---------+-------------------------------------------------------------

api_key | text | not null

password | text | not null

id | integer | not null default nextval('shopifyaccount_id_seq'::regclass)

userid | uuid |

apiuserid | uuid |

Indexes:

"shopifyaccount_pkey" PRIMARY KEY, btree (id)

为什么要创建 2 个这样命名的列?即使我尝试指定外键为 "userid",它仍会创建 apiuserid 列。插入永远不会更新 apiuserid 列,但它会更新 userid 列。然后在加入时,它将尝试加入 apiuserid。我做错了什么?

所以...似乎 "foreignkey" 需要在 ApiUser 和 ShopifyAccount 两个地方指定:

{
  "name": "ApiUser",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "postgresql": {
      "table": "users"
    },
    "validateUpsert": true
  },
  "properties": {
    "id": {
      "type": "string",
      "id": true,
      "required": true,
      "defaultFn": "uuid",
      "postgresql": {
        "dataType": "uuid"
      }
    },
    "email": {
      "type": "string",
    ...
  "relations": {
    "shopifyAccounts": {
      "type": "hasOne",
      "model": "ShopifyAccount",
      "foreignKey": "userid"
    }
  },
  "acls": [],
  "methods": {}
}