iT邦幫忙

DAY 20
1

Cloud Foundry 雲端應用開發實戰系列 第 20

Cloud Foundry 雲端應用開發實戰(20/30)使用 MongoDB 資料庫服務

Cloud Foundry 是開放源碼的 PaaS 解決方案,支援多種程式語言、開發框架及資料庫等服務,而且更容易開發、測試及佈署。本系列文章將從零開始,和學習者一起開啟雲端應用程式開發的大門。

Node.js Express + Mongoose 存取 MongoDB 資料庫範例。
回到之前建立的 Express 專案,我們開始實作一個存取 MongoDB 資料庫的範例程式。

在 package.json 加入「mongoose」及「cloudfoundry」的 dependencies 設定:

::

"dependencies": {
"express": "3.0.0rc5",
"jade": "*",
"mongoose": "*",
"cloudfoundry": "*"
}

然後使用 NPM 安裝套件。

::

npm install

這個新安裝的套件「mongoose」是 Node.js 的 MongoDB 函式庫,直接使用 Node.js 的 MongoDB Driver 相當麻煩,一個簡單的查詢就需要多層的 JavaScript closure;搭配 mongoose 不僅簡化查詢所需的語法,也提供類似 ORM(物件關聯映射)設計。

我們延續之前使用的應用程式命名「myfirstnode」,並建立一個新的服務:

::

vmc create-service mongodb

如果建立成功,VMC 會有以下訊息:

::

Creating Service [mongodb-9bd2c]: OK

由以上訊息可知新服務名稱是「mongodb-9bd2c」,我們還需要將服務和應用程式綁定(bind),才能開始在應用程式中存取服務。

::

vmc bind-service mongodb-9bd2c myfirstnode

以下的範例程式加在 var app = express(); 前面,使用 MongoDB 記錄應用程式啟動次數。

::

var mongoose = require('mongoose');
var cloudfoundry = require('cloudfoundry');

var credentials = JSON.parse(process.env.VCAP_SERVICES)['mongodb-2.0'][0]['credentials'];
var db = mongoose.createConnection("mongo://"

  • credentials["username"]
  • ":" + credentials["password"]
  • "@" + credentials["hostname"]
  • ":" + credentials["port"]
  • "/" + credentials["db"]);

var Counter = new mongoose.Schema ({name: String, num: Number});

mongoose.model('Counter', Counter);
var Counter = db.model('Counter');

Counter.findOne({name: 'startup'}, function(err, counter) {
if(!err) {
if (!counter) {
counter = new Counter();
counter.num = 0;
}
counter.num++;
counter.save(function(err) {
if(!err) {
console.log('could not save counter');
}
});
}
});

重新發佈應用程式:

::

vmc update myfirstnode

接下來建立通道(tunnel),以方便使用 MongoDB Client 手動查詢資料庫內容:

::

vmc tunnel mongodb-9bd2c

執行以上的指令,會詢問 Cloud Foundry 的密碼,輸入後會上傳「caldecott」這個程式。

看到以下的詢問,輸入 2 選擇「mongo」指令(MongoDB 內建的 Client 程式)。

::

Starting tunnel to mongodb-9bd2c on port 10000.
1: none
2: mongo
Which client would you like to start?:

你會看到類似以下的訊息,代表 VMC 已經幫你建立一個 MongoDB Client 到 PaaS MongoDB 資料庫的特殊連線:

::

Launching 'mongo --host localhost --port 10000 -u 6f3aab6a-574e-4901-a0c5-6a42a2a78d49 -p 56201b90-74e1-4898-8779-943a184277fa db'

在 MongoDB Client 直接輸入 MongoDB 查詢語法(JavaScript):

::

db.Counter.find();

就可以看到在 Node.js 程式中寫入 MongoDB 的資料。


上一篇
Cloud Foundry 雲端應用開發實戰(19/30)Cloud9 IDE 雲端整合開發環境
下一篇
Cloud Foundry 雲端應用開發實戰(21/30)Grails 介紹
系列文
Cloud Foundry 雲端應用開發實戰31

尚未有邦友留言

立即登入留言