2016-01-22 124 views
0

我想用Node.js連接到MongoDB。 Mongojs工作正常,但Mongojs沒有:MongoJS在MongoClient沒有返回結果

var MongoClient = require('mongodb').MongoClient; 
var mongojs = require('mongojs'); 
var url = '...'; 

MongoClient.connect(url, function(err, client) { 
    var cursor = client.db("events").collection('events').find(); 
    cursor.each(function(err, event) { 
     console.log("OK MONGODB"); 
    });  
}); 

mongojs(url, ['events']).events.find(function(err, events) { 
    events.forEach(function(event) { 
     console.log("OK MONGOJS"); 
    }); 
}); 

「OK MONGODB」被記錄幾次; 「OK MONGOJS」不是。

有什麼不對嗎?

回答

1

對您而言,MongoClient中使用的url應與mognojs不同。

假設url'mongodb://localhost/',則MongoClient可以。然而,url used in mongojs應該和dbname添加如下

var db = mongojs('mongodb://localhost/mydb', ['mycollection']); 

所以應該如下

mongojs(url+'events', ['events']).events.find(...); 
+0

感謝這個答案,但我仍然有一個問題。我有3個數據庫:管理員,活動和本地。當我選擇管理員時,它可以工作,但我沒有我想要訪問的集合(他們在事件中)。當我選擇事件時,我得到「MongoError:身份驗證失敗。」。你知道我做錯了嗎? – Arnaud

+0

@Arnaud,[啓用客戶端訪問控制](https://docs.mongodb.org/manual/tutorial/enable-authentication/)mongodb。你應該通過[mongodb:// [username:password @] host1 [:port1]](https://docs.mongodb.org/v2.6/reference/connection-string/)連接mongo,請參考此處的鏈接。 – zangw

+0

我已經使用連接字符串「mongodb:// root:password @ IP:27017」,並且這適用於管理數據庫。這是否意味着我必須爲事件數據庫定義一個新用戶? – Arnaud