Как добавить внешний ключ в loopback4? - PullRequest
0 голосов
/ 19 января 2019

В соответствии с этим обсуждением и другие ресурсы доступны для 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. Вот учебник, которому я следую

1 Ответ

0 голосов
/ 20 января 2019

Похоже, внешние ключи должны быть определены в настройках модели. Я не уверен, так ли это было для фунтов 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

...