使用 StrongLoop 创建 Node.js MySQL 应用程序
时间:2023-05-27 19:37:01
使用 StrongLoop 创建 Node.js MySQL 应用程序
Arpitha Myla
2015年 10月 20日发布
这个简短的教程将被展示和使用 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 命令:npm install -g strongloop
要验证 LoopBack 如果安装成功,可以键入slc -v
它应该显示你的 StrongLoop 安装版。
创建骨架 LoopBack 应用程序
切换到您的开发目录。cd
用下面的命令创建一个名为-loopback-example新的应用程序(如 amyla-loopback-example)。slc loopback -loopback-example
输入应用程序名称和安装目录,完成新 StrongLoop 项目的初始化。你现在有了一个完整的 Node.js StrongLoop 应用程序。尝试操作您的应用程序并打开资源管理器页面。cd -loopback-example
node server/server.js
如果发生类似如果发生类似Cannot find module ‘loopback可以操作 npm install 在 中安装所需的模块node_modules 目录。单击 show/hide 链接显示你的新应用程序带来的 StrongLoop API:
安装 StrongLoop MySQL 连接器
接下来,我们将通过安装 LoopBack MySQL 连接器向项目添加对 MySQL 数据库支持。操作以下命令安装 StrongLoop MySQL 连接器:cd -loopback-example
npm install --save loopback-connector-mysql
配置数据源
现在我们已经增加了适当的数据库支持,您必须连接数据源。创建和配置一个名称AccountDb新数据源。slc loopback:datasource AccountDb
接受默认数据源名称。选择 数据库类型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输入应用程序名称-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{
"cleardb":[
{
"name":"MyClearDBMySQLDatabase-5y",
"label":"cleardb",
"plan":"spark",
"credentials":{
"jdbcUrl":"jdbc:mysql://.cleardb.net/?user=&password=",
"uri":"mysql://:@.cleardb.net:3306/?reconnect=true",
"name":"",
"hostname":".cleardb.net",
"port":"3306",
"username":"",
"password":""
}
}
]
}
将凭据添加到 server/datasources.json 文件中。{
"db":{
"name":"db",
"connector":"memory"
},
"AccountDb":{
"host":".cleardb.net",
"port":3306,
"database":"",
"password":"",
"name":"AccountDb",
"user":"",
"connector":"mysql"
}
}
创建数据模型
现在数据库已成功添加且配置了数据源,可以开始创建数据模型了。数据模型描述您应用程序中的模式或数据对象。每个数据对象将在 StrongLoop 中拥有自己的模型。完整的模式是模型的集合。在这里,我们为 Account 对象创建了一个数据模型。slc loopback:model Account
按照提示配置该数据模型。对于模型的“base class”,使用“PersistedModel”并选择通过 REST API 公开该模型。添加模型属性如下:Name:Account
Datasource:AccountDb
Base class:PersistedModel
Expose via REST:Yes
Custom plural form:Leave blank
对于数据模型上的属性,创建以下 3 个属性。Property name: email
Property type: string
Required?Not required
Property name: createdAt
Property type: date
Required?Not required
Property name: lastModifiedAt
Property type: date
Required?Not required
我们现在已拥有数据库支持、数据源和数据模型。有了这些,我们就可以使用对象关系映射 (ORM),使用 StrongLoop 中的自动迁移工具,在 MySQL 中从数据模型生成数据库模式。
添加脚本来创建数据库中的模式
在您项目的根目录下的 ./server 文件夹中创建一个 bin 目录。cd server
mkdir bin
在 server/bin 目录中,使用以下代码创建一个名为 automigrate.js 的文件。var app = require('../server');
var accounts = [
{
email:'foo@bar.com',
createdAt: new Date(),
lastModifiedAt: new Date()
},
{
email:'baz@qux.com',
createdAt: new Date(),
lastModifiedAt: new Date()
}
];
// this loads the accountDb configuration in ~/server/datasources.json
var dataSource = app.dataSources.AccountDb;
// this automigrates the Account model
dataSource.automigrate('Account', function(err) {
if (err) throw err;
// this loads the Account model from ~/common/models/Account.json
var Account = app.models.Account;
var count = accounts.length;
accounts.forEach(function(account) {
// insert new records into the Account table
Account.create(account, function(err, record) {
if (err) return console.log(err);
console.log('Record created:', record);
count--;
if (count === 0) {
console.log('done');
dataSource.disconnect();
}
});
});
});
创建 MySQL 模式
使用下面的命令运行 automigrate.js 脚本来在 MySQL 中创建一个表。node server/bin/automigrate.js
运行上述脚本后,使用您最喜欢的 MySQL 客户端连接到您的 MySQL 数据库,您应看到表“account”包含 3 列:“email”、“createdAt”和“lastModifiedAt”。StrongLoop 还添加了一个“id”列。该表包含我们在脚本中创建的两个条目的数据,这两个条目是用来插入数据的:
运行该应用程序slc run
或
node server/server.js
并浏览到 http://localhost:3000/explorer。StrongLoop 向您的应用程序添加了一系列兼容 Swagger 的 API,用于访问帐户资源:
我们还可以使用资源管理器页面来测试每个 API。单击“POST /Accounts”链接插入新数据。输入一条新 JSON 记录并按下“Try it out!”。{
"email":"your@email.com",
"createdAt":"2015-09-01",
"lastModifiedAt":"2015-09-01"
}
您管理帐户的 StrongLoop 应用程序已完成!我们只需将它上传并部署到 Bluemix。
将 StrongLoop 应用程序部署到 Bluemix转到 Bluemix 仪表板并单击(您之前创建的)项目。
单击 start coding。
将 Bluemix 中的 Starter 应用程序的代码下载到您的 localhost,或者将 Git 存储库克隆到您的 localhost。
将 Bluemix Starter 应用程序的 manifest.yml 文件复制到您的本地 StrongLoop 应用程序“-loopback-example”的根目录下。此文件包含 Cloud Foundry 用来将 Node.js 应用程序部署到 Bluemix 的信息。
将隐藏的 .cfignore 文件复制到您的本地 StrongLoop 应用程序“-loopback-example”的根目录下。
修改本地 StrongLoop 的“package.json”文件来添加“cfenv”依赖项,并更改启动脚本参数(参见下面的代码段)
修改本地 StrongLoop 应用程序的 server/server.js 文件,使之包含 cfenv 要读取的主机和端口。Bluemix 以环境变量形式提供这些参数。在下面的代码段中,我修改了 StrongLoop 生成的 server.js 来反映这些更改。
从您的本地 StrongLoop 应用程序的根目录删除 node_modules 文件夹。
package.json 的代码段:"scripts":{
"start":"node server/server.js",
"pretest":"jshint ."
},
"dependencies":{
..
"cfenv":"1.0.x"
..
server/server.js 的代码段:var loopback = require('loopback');
var boot = require('loopback-boot');
// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');
// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();var app = module.exports = loopback();
app.start = function() {
// start the web server
return app.listen(appEnv.port, appEnv.bind, function() {
app.emit('started');
console.log('Web server listening at:%s', app.get('url'));
});
};
// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
if (err) throw err;
// start the server if `$ node server.js`
if (require.main === module)
app.start();
});
连接并登录到 Bluemix:cf api https://api.ng.bluemix.net
cf login -u -o -s
使用 cf push 命令将您的应用程序推送到 Bluemix:cf push -loopback-example
cf push 应在 Bluemix 上启动一次 git 提交、git 推送,构建和部署。检查您的 Bluemix 仪表板或 JazzHub “Build & Deploy” 页面,确认您的应用程序现在已成功在 Bluemix 上运行!
相关主题访问 Bluemix 资源中心,全面了解 Bluemix 的最新动态,获取最新的学习资源。
developerWorks 云计算站点 提供了有关云计算的更新资源,包括
云计算 简介。
更新的 技术文章和教程,以及网络广播,让您的开发变得轻松,专家研讨会和录制会议 帮助您成为高效的云开发人员。
连接转为云计算设计的 IBM 产品下载和信息。
关于 社区最新话题 的活动聚合。