2011-04-14 150 views
5

我是Node.js和MongoDB的新手,但我打算創建一個基本的基於實時地理位置的Web應用程序。這是我在努力搞清楚如何節點和MongoDB交互:通過Node.js插入MongoDB

var mongo = require('mongodb'); 

var db = new mongo.Db('test', new mongo.Server('localhost',22892, {}), {}); 

db.open(function(){}); 

db.collection('docs', function(err,collection){ 
    doc = {"foo":"bar"}; 
    collection.insert(doc, function(){}); 
}); 

我可以看到,這是連接:

Thu Apr 14 15:24:12 [initandlisten] connection accepted from 127.0.0.1:46968 #26 
Thu Apr 14 15:24:12 [conn26] building new index on { _id: 1 } for test.docs 
Thu Apr 14 15:24:12 [conn26] done for 0 records 0secs 

但它不插入任何文件到數據庫中。誰能告訴我我做錯了什麼?

感謝

+0

哪個特定的mongodb驅動程序正在使用? – Raynos 2011-04-14 20:38:36

+0

你可以參考這個鏈接。 https://programmerblog.net/nodejs-mongodb-tutorial/ – 2017-07-20 11:54:32

回答

28
db.open(function(err, client){ 
    client.createCollection("docs", function(err, col) { 
     client.collection("docs", function(err, col) { 
      for (var i = 0; i < 100; i++) { 
       col.insert({c:i}, function() {}); 
      } 
     }); 
    }); 
}); 

你忘了你的open回調做的一切。這很重要,否則在連接到數據庫之前,您的代碼將會運行。你必須做一切異步。如果不存在,最好創建集合。

看一看廣泛的例子在github page

現在這個樣子回調麪條,所以我們使用流量控制就像Step,使其漂亮。

Step(
    function() { 
     db.open(this); 
    }, 
    function(err, client) { 
     client.createCollection("docs", this); 
    }, 
    function(err, col) { 
     for (var i = 0; i < 100; i++) { 
      col.insert({c:i}); 
     } 
    } 
); 
+1

不錯且可讀的代碼;爲我工作。謝謝! – ambrus 2012-01-23 15:23:14

相關問題