如何在环回中向现有表添加列

时间:2018-10-18 21:44:29

标签: node.js model loopbackjs

我有2个模型,项目和策略。两者都已经部署,并且在数据库(SQL)中创建了表。

我想在它们之间添加一个关系:项目-> hasOne->策略

我将其添加到Item.json:

"relations": {
    "policy": {
      "type": "hasOne",
      "model": "Policy",
      "foreignKey": "policyId"
    }

这是Policy.json

"relations": {
    "item": {
      "type": "belongsTo",
      "model": "Item",
      "foreignKey": "policyId"
    }
}

我认为,只要运行现有代码,autoregenerate就会注意到存在的差异,并在表中添加了一个额外的列。相反,我得到了错误:

(node:216) UnhandledPromiseRejectionWarning: RequestError: Invalid column name 'policyId'.
    at handleError (C:\Users\user\Project\MyProject\node_modules\loopback-connector-mssql\node_modules\mssql\lib\tedious.js:519:15)

我的意思是我错过了一些东西。当然,没有在Item表中创建任何额外的列。

我该怎么做才能启动要添加的列,还是需要手动执行此操作?

1 个答案:

答案 0 :(得分:1)

如果您在policy中创建item的关系,则应在item模型中包括该关系。

示例

  

我们有两个模型UserFollowerUser,如果我们需要在EndUser中创建UserFollower关系,那么我们将

更改为UserFollower
"properties": {
        "followee": {
            "type": "string",
            "required": true
        },
        "follower": {
            "type": "string",
            "required": true
        }
    },
  "relations": {
        "enduser_followee": {
            "type": "belongsTo",
            "model": "EndUser",
            "foreignKey": "followee"
        }
    }
  

根据您的要求,只需从Policy.json删除以下代码

"relations": {
    "item": {
      "type": "belongsTo",
      "model": "Item",
      "foreignKey": "policyId"
    }
}