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
答案 0 :(得分:1)
看起来必须在模型设置中定义外键。我不确定磅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
答案 1 :(得分:0)
找到了答案here,除了将设置添加到@model
批注之外,您还必须进行更改以指定应按哪个顺序创建表格