您好,欢迎访问一九零五行业门户网

VMWare的Cloud Foundry实践(二):和MongoDB对接成功

简单说一下,这个代码一开始定义了mongo对象,这个if-else是为了让这个程序在云端和本地都能使用,假如是云端的话,走的时if支线
晚上继续照着教程,完成了对mongodb的对接,中间有一些小坎坷。
1. 照着这个教程来:
2. 下载安装mongodb:
3. 新建一个文件夹mongo,创建主页main.js,并写入如下代码:
简单说一下,这个代码一开始定义了mongo对象,这个if-else是为了让这个程序在云端和本地都能使用,假如是云端的话,走的时if支线,mongo从vcap_services里面取配置。假如是本地的话,走else分支,mongodb的地址是localhost。之后通过函数generate_mongo_url()拼接出mongodb的url。之后,再取得了用户的远程地址之后,把他加入数据库,并在浏览器显示。
// mongodb-65b2c 
if(process.env.vcap_services){ 
  var env = json.parse(process.env.vcap_services); 
  var mongo = env['mongodb-2.0'][0]['credentials']; 

else{ 
  var mongo = { 
    hostname:localhost, 
    port:27017, 
    username:, 
    password:, 
    name:, 
    db:db 
  } 
}
var generate_mongo_url = function(obj){ 
  obj.hostname = (obj.hostname || 'localhost'); 
  obj.port = (obj.port || 27017); 
  obj.db = (obj.db || 'test');
if(obj.username && obj.password){ 
    return mongodb:// + obj.username + : + obj.password + @ + obj.hostname + : + obj.port + / + obj.db; 
  } 
  else{ 
    return mongodb:// + obj.hostname + : + obj.port + / + obj.db; 
  } 
}
var mongourl = generate_mongo_url(mongo);
var record_visit = function(req, res){ 
  /* connect to the db and auth */ 
  require('mongodb').connect(mongourl, function(err, conn){ 
    conn.collection('ips', function(err, coll){ 
      /* simple object to insert: ip address and date */ 
      object_to_insert = { 'ip': req.connection.remoteaddress, 'ts': new date() };
/* insert the object then print in response */ 
      /* note the _id has been created */ 
      coll.insert( object_to_insert, {safe:true}, function(err){ 
        res.writehead(200, {'content-type': 'text/plain'}); 
        res.write(json.stringify(object_to_insert)); 
        res.end('\n'); 
      }); 
    }); 
  }); 
}
var http = require('http');
http.createserver(function (req, res) { 
        record_visit(req, res); 
    }).listen(3000); 
4. 还有重要的一步,在项目的目录下执行npm install mongodb,这个会在项目的文件夹里面,下载一些文件,,也就是mongodb的支持库。
一开始我在另外一个控制台执行npm install mongodb,以为他对全局都生效,后来在部署的时候,死活通不过,在checking mongodb的时候失败!
5. 现在可以部署了,使用 vmc update 发布应用。注意,在被问到是不是要额外的service时,一定要选yes,然后cf云就会帮你添加对mongodb的支持。
6. 测试一下:
其它类似信息

推荐信息