Я пытаюсь выучить 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. Любая помощь приветствуется.
EDIT:
Вот мой конфиг для соединения с базой данных 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"
}