2014-11-22 100 views
0

我正在嘗試在node.js中練習mongodb。我成功地連接數據庫,插入數據庫,但我不能從數據庫中獲取數據。這裏是我的代碼:在MongoDB中找不到數據集合

var mongo = require("mongodb"); 
var host = '127.0.0.1'; 
var port = 1337; 
var db = new mongo.Db('nodejs-introduction', new mongo.Server(host, port, {})); 

db.open(function(error, dbClient) { 
    console.log('We are connected'); 

}); 

var collection = db.collection('user'); 
collection.insert({ 
    id: "1", 
    name: "Musa", 
    twitter: "puzzlemusa", 
    email: "[email protected]" 
}, function(error) { 
    console.log('Successfully inserted Musa'); 
}); 

collection.find({id: "1"}, function(err, cursor) { 
    cursor.toArray(function(err, users){ 
     console.log("Found the following records", users); 
    }); 

}); 

回答

1

試試這個

var mongo = require("mongodb"); 

var host = '127.0.0.1'; 
var port = '27017'; // this is my port, change to 1337 

var db = new mongo.Db('nodejs-introduction', new mongo.Server(host, port)); 

db.open(function(err, db) { 
    if (err) { 
    return console.log(err); 
    } 

    var collection = db.collection('user'); 

    insert(collection); 

    // find(collection); 
}); 


function insert(collection) { 
    collection.insert({ 
     id: "1", 
     name: "Musa", 
     twitter: "puzzlemusa", 
     email: "[email protected]" 
    }, function (error) { 
     if (error) { 
     return console.log(error); 
     } 

     console.log('Successfully inserted Musa'); 

     find(collection); 
    }); 
} 

function find(collection) { 
    collection.find({id: '1'}).toArray(function(err, users) { 
    console.log(users); 
    }); 
} 
1

您遇到了Node.js異步性質的問題。如果你運行這個,可以在collection.insert之前完成collection.find。試試這個。

var mongo = require("mongodb"); 
var host = '127.0.0.1'; 
var port = 1337; 
var db = new mongo.Db('nodejs-introduction', new mongo.Server(host, port, {})); 

db.open(function(error, dbClient) { 
    console.log('We are connected'); 

}); 

var collection = db.collection('user'); 
collection.insert({ 
    id: "1", 
    name: "Musa", 
    twitter: "puzzlemusa", 
    email: "[email protected]" 
}, function(error) { 
    console.log('Successfully inserted Musa'); 

    collection.find({id: "1"}, function(err, cursor) { 
     cursor.toArray(function(err, users){ 
      console.log("Found the following records", users); 
     }); 
    }); 
}); 

通過將查找內容放入插入的回調函數中,可以保證查找不會在插入實際完成之前運行。

+0

我已經試過你的代碼,但還是我從用戶越來越空。 – 2014-11-22 07:09:43

+1

檢查插入命令的錯誤值。 – 2014-11-22 07:24:00

+0

插入命令錯誤爲空 但在cursor.toArray中的錯誤是:無法確定服務器的狀態 – 2014-11-22 07:41:37