2011-08-04 91 views
3

我目前正在嘗試與節點和Mongo搞混了一些自學。我一直在看各種博客文章,並且一直在搞一個簡單的博客,用mongo db來編寫節點。Node.js mongodb本地驅動程序身份驗證在cloudfoundry

無論如何,我很難讓它在cloudfoundry中工作。我看了關於認證MongoDB的本地用戶組,​​並發現了一些節點腳本:

var Db = require('mongodb').Db; 
var Connection = require('mongodb').Connection; 
var Server = require('mongodb').Server; 
var BSON = require('mongodb').BSON; 
var ObjectID = require('mongodb').ObjectID; 

ArticleProvider = function(dbname,host, port,username,password) { 
    this.db= new Db(dbname, new Server(host, port, {auto_reconnect: true}, {})); 
    this.db.open(function(){ 
     this.db.authenticate(username, password, function(err, db) { 
       callback(err, db); 
     }); 
    }); 
}; 

我不能爲我的生命得到這個工作。

 this.db.authenticate(username, password, function() {}); 
       ^
TypeError: Cannot call method 'authenticate' of undefined 
    at /home/ben/NodeJS/sandbox/NodeBlog/articleprovider-mongodb.js:10:17 
    at /home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/db.js:81:14 
    at /home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/connections/server.js:76:11 
    at /home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/admin.js:16:12 
    at [object Object].<anonymous> (/home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/admin.js:124:12) 
    at [object Object].emit (events.js:67:17) 
    at [object Object].<anonymous> (/home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/connections/server.js:97:12) 
    at [object Object].emit (events.js:64:17) 
    at Socket.<anonymous> (/home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/connection.js:108:16) 
    at Socket.emit (events.js:64:17) 

任何人都能指出我是一個完整的facepalmer將不勝感激。

回答

1

連接這個最簡單的方法是在node-mongodb-native驅動程序中使用mongourl(mongodb:// localhost:27017/db ...)和connect函數。

Cloudfoundry啓動一個非常特定的身份驗證數據庫,然後告訴您如何在環境變量中連接到該數據庫,這可能會使調試變得更加困難。理想情況下,您希望它可以在本地計算機和Cloudfoundry上以基本相同的方式工作。

幸運的是,我發佈了一篇關於MongoDB.org的文章,它引導您完成一個簡單的Cloudfoundry設置。它具有從零開始並在本地和Cloudfoundry上運行的分步說明。

另外還有一個github code sample

10

我也面臨同樣的問題。努力嘗試,我找到了解決方案。

這可能對所有mongodb開發人員非常有幫助。

var ArticleProvider = function(host, port, username, password) { 
    this.db= new Db('my_db', new Server(host, port, {auto_reconnect: true}, {})); 
    this.db.open(function(err,data){ 
    if(data){ 
     data.authenticate(username, password,function(err2,data2){ 
      if(data2){ 
       console.log("Database opened"); 
      } 
      else{ 
       console.log(err2); 
      } 
     }); 
     } 
     else{ 
      console.log(err); 
     } 
    }); 
}; 

乾杯..