通过Node.js插入MongoDB

Tom*_*Tom 5 mongodb node.js

我是Node.js和MongoDB的新手,但我打算创建一个非常基本的基于实时地理位置的Web应用程序.这是我试图弄清楚Node和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(){});
});
Run Code Online (Sandbox Code Playgroud)

我可以看到这是连接:

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
Run Code Online (Sandbox Code Playgroud)

但它没有将任何文档插入数据库.谁能告诉我我做错了什么?

谢谢

Ray*_*nos 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() {});
             }
         });
    });
});
Run Code Online (Sandbox Code Playgroud)

你忘了在你的open回调中做所有事情.这很重要,否则您的代码在打开与数据库的连接之前运行.你必须做一切异步.如果它不存在,最好创建它.

看看github页面上的大量示例

现在这看起来像回调意大利面,所以我们使用flowcontrol 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});
        }
    }
);
Run Code Online (Sandbox Code Playgroud)