这篇简短教程将展示使用 StrongLoop API 将来自 MySQL 数据库的数据与 Node.js 相集成的步骤。我们不要求掌握命令行以外的任何工具!完成本教程后,您将能够浏览生成的 API:
在这里,您能够使用 StrongLoop API Explorer 来 POST 数据,并在所选的数据库浏览器中检查结果。
开始之前
除了命令行之外,下面是一些必备工具:
- 一个本地 Node.js 安装(参见 Node.js 下载,或者如果您更喜欢 Eclipse 环境,请参见 Nodeclipse 下载)
- Node.js 可执行 npm,用于 Node.js 的包管理器
当然,您还需要一个 Bluemix 帐户。
在应用程序中使用 StrongLoop 之前,必须安装 StrongLoop 命令行工具。这些工具包括 slc、StrongLoop Process Manager 的命令 shell、strong-pm 和 LoopBack API 框架(包含 CLI 和 GUI)。要安装 StrongLoop 工具,请执行下面这条 npm 命令:
1 |
|
要验证 LoopBack 是否安装成功,可键入
1 |
|
它应该显示了您的 StrongLoop 安装的版本。
创建一个骨架 LoopBack 应用程序
切换到您的开发目录。
1 |
|
使用下面这条命令,创建一个名为“<alias>-loopback-example”的新应用程序(比如 amyla-loopback-example)。
1 |
|
输入应用程序名称和安装目录,以便完成新 StrongLoop 项目的初始化。您现在已经有一个完整的 Node.js StrongLoop 应用程序。尝试运行您的应用程序并打开资源管理器页面。
1 2 |
|
如果发生类似“Cannot find module ‘loopback'”的错误,可运行 npm install 将所需的模块安装在 node_modules 目录中。单击 show/hide 链接显示您的新应用程序随带的 StrongLoop API:
安装 StrongLoop MySQL 连接器
接下来,我们将通过安装 LoopBack MySQL 连接器,向项目添加对 MySQL 数据库的支持。运行下面这条命令来安装 StrongLoop MySQL 连接器:
1 2 |
|
配置数据源
现在我们已经添加了适当的数据库支持,您必须为数据源配置数据库连接。创建和配置一个名为“AccountDb”的新数据源。
1 |
|
接受默认数据源名称。对于数据库类型,选择 MySQL。
创建一个 Node.js 应用程序和 MySQL 服务
现在我们已有一个在 localhost 上运行的有效的 StrongLoop 应用程序,我们将向应用程序添加一个 MySQL 连接,因此必须先创建一个想要连接到的 MySQL 实例。
如果已有一个想要使用的现有的 MySQL 数据库实例,您可以跳过这一步,使用您现有的服务的 MySQL 凭据。
我将在 Bluemix 中创建一个新 MySQL 数据库实例。如果没有 Bluemix 帐户,请注册一个免费的 Bluemix 试用版帐户。
- 登录到 Bluemix 控制台:console.ng.bluemix.net。
- 转到仪表板。
- 在“Cloud Foundry Apps”下,单击“CREATE APP”。
- 选择“WEB”。
- 选择“SDK for Node.js”并单击“CONTINUE”。
- 在“APP NAME”上输入应用程序名称“<alias>-loopback-example”并单击“FINISH”。
等待应用程序完成暂存。
- 显示消息“Your app is running”后,单击 Overview 页面。
- 单击“ADD A SERVICE OR API”,或者如果已创建了 MySQL 服务,单击“BIND A SERVICE OR API”。
- 搜索“MySQL”或向下滚动到 Data & Analytics 服务。
- 找到并选择“ClearDB MySQL Database”服务。
- 接受默认设置或重命名该服务,按“USE”并确认“重新暂存”应用程序。
在创建服务后,在应用程序细节页面的左侧菜单中,转到“Environmental Variables”来查看 MySQL 服务凭据。或者转到 Overview 页,在 service 窗口中单击“Show Credentials”链接。
配置数据源
在应用程序目录中,打开 server/datasources.json 文件,添加您的数据源配置。复制 ClearDB MySQL 服务的凭据,或使用您自己的 MySQL 数据库凭据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
将凭据添加到 server/datasources.json 文件中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
创建数据模型
现在数据库已成功添加且配置了数据源,可以开始创建数据模型了。数据模型描述您应用程序中的模式或数据对象。每个数据对象将在 StrongLoop 中拥有自己的模型。完整的模式是模型的集合。在这里,我们为 Account 对象创建了一个数据模型。
1 |
|
按照提示配置该数据模型。对于模型的“base class”,使用“PersistedModel”并选择通过 REST API 公开该模型。添加模型属性如下:
1 2 3 4 5 |
|
对于数据模型上的属性,创建以下 3 个属性。
1 2 3 4 5 6 7 8 9 |
|
我们现在已拥有数据库支持、数据源和数据模型。有了这些,我们就可以使用对象关系映射 (ORM),使用 StrongLoop 中的自动迁移工具,在 MySQL 中从数据模型生成数据库模式。
添加脚本来创建数据库中的模式
在您项目的根目录下的 ./server 文件夹中创建一个 bin 目录。
1 2 |
|
在 server/bin 目录中,使用以下代码创建一个名为 automigrate.js 的文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
创建 MySQL 模式
使用下面的命令运行 automigrate.js 脚本来在 MySQL 中创建一个表。
1 |
|
运行上述脚本后,使用您最喜欢的 MySQL 客户端连接到您的 MySQL 数据库,您应看到表“account”包含 3 列:“email”、“createdAt”和“lastModifiedAt”。StrongLoop 还添加了一个“id”列。该表包含我们在脚本中创建的两个条目的数据,这两个条目是用来插入数据的:
运行该应用程序
1 2 3 |
|
并浏览到 http://localhost:3000/explorer。StrongLoop 向您的应用程序添加了一系列兼容 Swagger 的 API,用于访问帐户资源:
我们还可以使用资源管理器页面来测试每个 API。单击“POST /Accounts”链接插入新数据。输入一条新 JSON 记录并按下“Try it out!”。
1 2 3 4 5 |
|
您管理帐户的 StrongLoop 应用程序已完成!我们只需将它上传并部署到 Bluemix。
将 StrongLoop 应用程序部署到 Bluemix
- 转到 Bluemix 仪表板并单击(您之前创建的)项目。
- 单击 start coding。
- 将 Bluemix 中的 Starter 应用程序的代码下载到您的 localhost,或者将 Git 存储库克隆到您的 localhost。
- 将 Bluemix Starter 应用程序的 manifest.yml 文件复制到您的本地 StrongLoop 应用程序“<alias>-loopback-example”的根目录下。此文件包含 Cloud Foundry 用来将 Node.js 应用程序部署到 Bluemix 的信息。
- 将隐藏的 .cfignore 文件复制到您的本地 StrongLoop 应用程序“<alias>-loopback-example”的根目录下。
- 修改本地 StrongLoop 的“package.json”文件来添加“cfenv”依赖项,并更改启动脚本参数(参见下面的代码段)
- 修改本地 StrongLoop 应用程序的 server/server.js 文件,使之包含 cfenv 要读取的主机和端口。Bluemix 以环境变量形式提供这些参数。在下面的代码段中,我修改了 StrongLoop 生成的 server.js 来反映这些更改。
- 从您的本地 StrongLoop 应用程序的根目录删除 node_modules 文件夹。
package.json 的代码段:
1 2 3 4 5 6 7 8 |
|
server/server.js 的代码段:
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
连接并登录到 Bluemix:
1 2 |
|
使用 cf push 命令将您的应用程序推送到 Bluemix:
1 |
|
cf push 应在 Bluemix 上启动一次 git 提交、git 推送,构建和部署。检查您的 Bluemix 仪表板或 JazzHub “Build & Deploy” 页面,确认您的应用程序现在已成功在 Bluemix 上运行!