将 LoopBack 应用程序连接到现有 MySQL 数据库

Connect LoopBack app to existing MySQL database

我有一个本地 MySQL 数据库 mydb。它包含一个名为 person 的 table,带有字段 id(主键,整数自动递增)和 name(文本)。 table 包含我不想删除的记录。

我想要一个通过数据源 myds 连接到 mydb 的 LoopBack 应用程序。该应用程序应该有一个模型 Person(扩展 PersistedModel)。 Person 模型上的 CRUD 操作应反映在 mydbpeople table 上。

如何构建应用程序?

使用应用程序生成器生成一个空应用程序。

>lb
? What's the name of your application? myapp 
? Enter name of the directory to contain the project: myapp
? Which version of LoopBack would you like to use? 3.x (current)
? What kind of application do you have in mind? empty-server

添加新数据源:

/* /server/datasources.json */
  "myds": {
    "host": "localhost",
    "port": 3306,
    "url": "",
    "database": "mydb",
    "password": "password",
    "name": "myds",
    "user": "root",
    "connector": "mysql"
  }

安装环回连接器-mysql:

> npm install loopback-connector-mysql --save

创建模型

/* /common/models/Person.json */
{
  "name": "Person",
  "plural": "People",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "id": {
      "type": "number",
      "required": true
    },
    "name": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

然后将模型附加到数据源。

/* /server/model-config.json */
{
  // ...
  "Person": {
    "dataSource": "myds",
    "public": true
  }
  //...
}

应用程序已完成。 运行 应用程序,

> node .

然后在浏览器中导航至 localhost:3000/explorer。单击 Person 模型,然后单击路由 GET /People,然后单击 "try it out!" 应用程序应 return person [=45= 中的所有行] 来自数据库。其他 CRUD 操作也应该正常运行。

注意命名很重要。当我们将名为 Person 的模型连接到数据源 myds 时,它本身连接到数据库 mydb,LoopBack 在 mydb 中查找名为 Person 的 table (这可能与 MySQL 安装中 table 名称的区分大小写相互作用),其字段名称与 Person 的属性完全相同。