我正在尝试学习LoopBack 4,因此我制作了它们在官方文档中提供的教程示例。我想将todoList示例的数据源从“ In-memory db”更改为“ MySQL”,但是即使我认为这很琐碎,也没有成功。
这是我的一些代码。
todo.repository.ts
export class TodoRepository extends DefaultCrudRepository<
Todo,
typeof Todo.prototype.id
> {
constructor(
@inject('datasources.db') dataSource: MysqldbDataSource,
) {
super(Todo, dataSource);
}
}
todo-list.repository.ts
export class TodoListRepository extends DefaultCrudRepository<
TodoList,
typeof TodoList.prototype.id
> {
public readonly todos: HasManyRepositoryFactory<
Todo,
typeof TodoList.prototype.id
>;
constructor(
@inject('datasources.db') dataSource: MysqldbDataSource,
@repository.getter(TodoRepository)
protected todoRepositoryGetter: Getter<TodoRepository>,
) {
super(TodoList, dataSource);
this.todos = this.createHasManyRepositoryFactoryFor(
'todos',
todoRepositoryGetter,
);
}
}
据我所知,这里存储库代码负责将控制器与实际数据连接起来,然后替换代码,并将其显示为DbDataSource
更改为MysqldbDataSource
在上面的代码中。
无论如何,我一直将数据保存在 data / db.json 中(其中“内存数据库”放置数据),而不是从实际的MySQL数据库中检索数据。感谢您的任何帮助。
编辑:
这是我与MySQL数据库连接的配置
todo-list.repository.ts
{
"name": "mysqldb",
"connector": "mysql",
"url": "mysql://root:123456@localhost/todo",
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456",
"database": "todo"
}
答案 0 :(得分:0)
嗯,这很简单,就像我从一开始就想的那样。我只需要更改@inject
和todo.repository.ts
中的todo-list.repository.ts
名称,就像这样:
@inject('datasources.mysqldb') dataSource: MysqldbDataSource
我发誓昨天晚上我做到了,然后才入睡,但没有工作。今天,我只是通过LB CLI创建了全新的存储库,并且确实有效。也许昨天我太困了...