我是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(){});
});
我可以看到这是连接:
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 :(得分: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
回调中执行所有操作。这很重要,否则您的代码在打开与数据库的连接之前运行。你必须做一切异步。如果它不存在,最好创建它。
现在这看起来像回调意大利面,所以我们使用像Step
之类的flowcontrol来使它漂亮。
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});
}
}
);