我正在尝试学习 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('in-memory db' 放置数据的地方)中,而不是从实际的 MySQL 数据库中检索数据。任何帮助 ins 表示赞赏。
编辑:
这是我与 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"
}
嗯,这很简单,就像我从一开始就想的那样。我只需要更改and 中的@inject
名称,如下所示:todo.repository.ts
todo-list.repository.ts
@inject('datasources.mysqldb') dataSource: MysqldbDataSource
我发誓我昨天晚上睡觉前做了那件事,但没有奏效。今天,我只是从 LB CLI 创建了全新的存储库,并且确实有效。可能我昨天太困了...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句