使用 Node.js 和 dashDB 服务开发一个公共交通系统模拟器(2)
 
- UID
- 1066743
|

使用 Node.js 和 dashDB 服务开发一个公共交通系统模拟器(2)
3. 更新 package.json 文件当您从运行时创建 node.js 时,package.json 文件被构建。
以下键被添加到 dependencies 下面,以便启用 DB2® 上的访问。
所有 "jade" 都被更改为 "ejs"。
1
| "jade" :"*" to "ejs" :"*"
|
EJS 和 JADE 是由 Node.js Express 使用的模板引擎,通过服务器来构建 Web 页面:
- EJS 直接添加了 JavaScript 逻辑,并将值导入 HTML 代码串。
- JADE 是一个完整的模板语言,有它自己的语法和文档。
这两个模板引擎与客户端配合良好,在 Node.js 应用程序上都非常受欢迎。我们选择了 EJS,因为它类似于普通的 HTML 和 HTML 标记。
4. 修改 app.jsApp.js 是一个 Node.js 应用程序中最重要的 JavaScript 文档。它使用 Express 框架来控制服务器的行为,Express 是一个易于使用的框架,适用于事件驱动(实时)的 Web 应用程序。更新您的应用程序,以便使用示例应用程序所使用的设置,请进行以下更改:
- 将 view_engine 更改为读取 ejs,而不是读取 jade。
- 创建一个变量,并要求 ibmdb 开始在项目上使用 DB2。
- 在基本的 node.js 的第 36 行,找到注释 TODO,它提供了变量 service,检索与数据库连接的服务信息。
 - 添加下面的代码,完成服务器端的准备工作,并接收来自客户端的 POST。
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
42
43
44
45
46
47
48
49
50
51
52
| db2 = services['BLUAcceleration-10.5.3 Rev. A Build 0.1'][0].credentials;
//It will get specific credentials to log in your BLU Acceleration
var connString = "DRIVER={DB2};DATABASE=" + db2.db + ";
UID=" + db2.username + " WD=" + db2.password + ";
HOSTNAME=" + db2.hostname + ";port=" + db2.port;
//String built, required by ibmdb module.
/* app.post receives 2 parameters:
* '/' -> path that will receive the post.
* function(ibmdb, connString, db2.username) -> The callback
* function.It will receive the ibmdb variable, the connString
* created and the db2.username that changes according to Bluemix.
*
* It will connect on db2 once a post method is sent by the
* client-side using $.post jQuery function.
*
* A JSON object can be received by the client-side the req.body
* object. this function is written to receive objects named table,
* columns and/or extras.
*/
app.post('/', function(ibmdb, connString, db2.username){
return function(req, res){
ibmdb.open(connString, function(err, conn) {
if (err ) {
res.send("error occurred " + err.message);
} else {
var extra;
if(req.body.columns){
query = req.body.columns.join(", ");
} else {
query = '*';}
if(req.body.extra){
extra = req.body.extra;
} else {
extra = '';
};
query = "SELECT " + query + " FROM " +
db2.username + "."+ req.body.table + " " +
extra; //Change this query according to your application.
conn.query(query, function(err, tables){
if ( !err ) {
res.json(tables);
} else {
res.send("error occurred " + err.message);
}
});
}
});
};
});
|
5. 设置客户端文件为了接收示例应用程序中从 BLU Acceleration 和 DB2 检索到的数据,我们使用了下面的代码向服务器发送一个 POST 请求,开始模拟(使用 jQuery):
1
| $.post('/', {JSON}, function(data){ //do something });
|
公交车模拟器发送了一个 JSON 对象,从数据库中检索信息。该对象包含一些键,比如 table 用于指定表名,columns 用于指定要在查询中选择的特定列,还有 extras,用于条件(JOIN 数据和 WHERE 子句)。可以针对不同的模拟定制这种数据访问的一般方法。
在公交车模拟器版本上,在 public/js/database.js 文件的第 13 行,可以看到 $.post 在另一个 $.post 回调里面。该代码使页面先加载所有的数据库内容,然后才加载动画。 |
|
|
|
|
|