【问题标题】:How to add foreign key in loopback4?如何在loopback4中添加外键?
【发布时间】:2019-06-13 10:47:03
【问题描述】:

As per this discussion 和其他资源可用于 v3 及更早版本,但我无法找到直接使用 loopback 4 添加外键的方法,因此当我从模型迁移数据库时,我仍然有外键约束。

这是我到目前为止所拥有的,但迁移完成后我无法获得外键。

我的模特:

export class TodoList extends Entity {
  @hasMany(() => Todo, { keyTo: 'todoListId' })
  todos?: Todo[];
  @property({
    type: 'string',
  })
  todoListId: number;

我的仓库:

export class TodoListRepository extends DefaultCrudRepository<
  TodoList,
  typeof TodoList.prototype.id
  > {
  public readonly todos: HasManyRepositoryFactory<
    Todo,
    typeof Todo.prototype.id
    >;
  constructor(
    @inject('datasources.todo') dataSource: TodoDataSource,
    @repository.getter(TodoRepository)
    protected todoRepositoryGetter: Getter<TodoRepository>,
  ) {
    super(TodoList, dataSource);
    this.todos = this.createHasManyRepositoryFactoryFor(
      'todos',
      todoRepositoryGetter,
    );
  }
}

我使用 MySQL 作为数据源。但是当我运行npm run migrate 时,不会创建外键。

我想让toDoListId 列作为 todo 模型的外键。 Here's the tutorial I'm following

【问题讨论】:

    标签: mysql node.js loopbackjs strongloop


    【解决方案1】:

    看起来必须在模型设置中定义外键。我不确定 lb 2 和 3 是否是这种情况,但我能够在lb4 中实现这一点。

    另外,我认为您必须在 Todo 模型上创建这个特定的密钥。

    @model({
        settings: {
            "foreignKeys": {
                "todoListId": {
                    "name": "todoListId",
                    "foreignKey": "todoListId",
                    "entityKey": "id",
                    "entity": "TodoList"
                }
            }
        }
    })
    export class Todo extends Entity { ...
    

    https://loopback.io/doc/en/lb3/MySQL-connector.html#auto-migrateauto-update-models-with-foreign-keys

    【讨论】:

      【解决方案2】:

      找到答案here,除了将设置添加到@model注释之外,您还必须更改以指定应创建表的顺序

      【讨论】:

      • 也许如果你想改进你的答案,你可以在这里复制重要的 sn-p 以及在你的答案中。您现在的回答没有任何意义,我仍然需要访问链接以检查您的确切含义。
      猜你喜欢
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2018-07-19
      相关资源
      最近更新 更多