为什么我的数据源在 LoopBack 4 中没有从 'memory db' 更改为 MySQL?
Why my datasource is not chanching from 'memory db' to MySQL in LoopBack 4?
我正在尝试学习 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);
}
}
待办事项-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('in-memory db' 放置数据的地方)而不是从中检索数据实际的 MySQL 数据库。任何帮助表示赞赏。
编辑:
这是我与 MySQL 数据库连接的配置
待办事项-list.repository.ts
{
"name": "mysqldb",
"connector": "mysql",
"url": "mysql://root:123456@localhost/todo",
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456",
"database": "todo"
}
嗯,正如我一开始所想的那样非常简单。我只需要更改 todo.repository.ts
和 todo-list.repository.ts
中的 @inject
名称,如下所示:
@inject('datasources.mysqldb') dataSource: MysqldbDataSource
我发誓我昨天晚上睡觉前做了那个,但没有用。今天,我刚刚从 LB CLI 创建了全新的存储库,而且确实有效。可能是我昨天太困了...
我正在尝试学习 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);
}
}
待办事项-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('in-memory db' 放置数据的地方)而不是从中检索数据实际的 MySQL 数据库。任何帮助表示赞赏。
编辑:
这是我与 MySQL 数据库连接的配置
待办事项-list.repository.ts
{
"name": "mysqldb",
"connector": "mysql",
"url": "mysql://root:123456@localhost/todo",
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456",
"database": "todo"
}
嗯,正如我一开始所想的那样非常简单。我只需要更改 todo.repository.ts
和 todo-list.repository.ts
中的 @inject
名称,如下所示:
@inject('datasources.mysqldb') dataSource: MysqldbDataSource
我发誓我昨天晚上睡觉前做了那个,但没有用。今天,我刚刚从 LB CLI 创建了全新的存储库,而且确实有效。可能是我昨天太困了...