2011-08-04 11 views
3

現在、ノードとモンゴで自己学習のために混乱させようとしています。私は様々なブログのエントリを見ていて、mongo dbが働いているノードで書かれたシンプルなブログを手に入れていました。Node.js mongodb-クラウドフォンドリーでのネイティブドライバ認証

とにかく、私はそれを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); 
     } 
    }); 
}; 

乾杯..

関連する問題