为什么我的数据源没有在LoopBack 4中从“内存数据库”切换到MySQL?

时间:2019-04-02 07:51:36

标签: mysql node.js loopbackjs

我正在尝试学习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"
}

1 个答案:

答案 0 :(得分:0)

嗯,这很简单,就像我从一开始就想的那样。我只需要更改@injecttodo.repository.ts中的todo-list.repository.ts名称,就像这样:

@inject('datasources.mysqldb') dataSource: MysqldbDataSource

我发誓昨天晚上我做到了,然后才入睡,但没有工作。今天,我只是通过LB CLI创建了全新的存储库,并且确实有效。也许昨天我太困了...