2013-05-31 31 views
1

我想获取一些数据保存到MongoDb。我事先跟着下面的例子,并验证它的工作原理,但现在我试图用这个“格式”编写我自己的测试应用程序,它不工作。 MongoDb不会抛出任何错误,我甚至可以从插入回调中检索doc _id。然而,当我进入Mongo shell时,集合甚至不存在文档。MongoDb插入通过Node.js本机驱动程序不插入

这里是我跟着原来只是让你可以感受一下我试图模仿我自己的测试应用程序的方式,例如:

http://blog.ijasoneverett.com/2013/03/a-sample-app-with-node-js-express-and-mongodb-part-1/

下面是我的尝试是失败。谢谢你的帮助!

下面是我的DB代码:

var Db = require('mongodb').Db, 
    Connection = require('mongodb').Connection, 
    Server = require('mongodb').Server, 
    BSON = require('mongodb').BSON, 
    ObjectID = require('mongodb').ObjectID; 


Repository = function(host, port){ 
    this.db = new Db('test-mongo-db', new Server(host, port, {safe: true}, {auto_reconnect:true}, {})); 
    this.db.open(function(){ 

     console.log('db open'); 

    }); 
}; 

Repository.prototype.getCollection = function(callback){ 
    this.db.collection('owners', function(error, owners_collection){ 
     if (error) callback(error); 
     else 
      callback(null, owners_collection); 
    }); 
}; 

Repository.prototype.createOwner = function(owner, callback){ 
    this.getCollection(function(error, owners_collection){ 

     if (error) callback(error); 
     else { 

      owners_collection.insert(owner, function(error, doc){ 

       if (error) callback(error); 
       else { 
        console.log('insert was successful: ' + doc[0]['_id']); 
        callback(null, owner); 
       } 
      }); 

     } 

    }); 
}; 

exports.Repository = Repository; 

下面是一个调用它的代码:

var Repository = require('../repositories/Repository').Repository; 

exports.createOwner = function(req, res){ 


    var owner = { 

     email : req.body.email, 
     password : req.body.password, 
     firstName : req.body.firstName, 
     lastName : req.body.lastName, 

     schools : [] 

    }; 

    var repository = new Repository('localhost', 27017); 

    repository.createOwner(owner, function(error, docs){ 

     if (error) console.log('saving owner failed : ' + error); 
     else { 
      console.log('saving owner successful'); 
      res.redirect('/'); 
     } 

    }); 
}; 
+0

您可以将您的控制台输出呢? – Tracker1

+0

你好!没有错误。唯一的控制台输出是你在上面的代码中看到的成功消息。早些时候,我把字面控制台日志无处不在,一切似乎都打了,只是没有真正保存。 – cpeele00

+0

我更加好奇的消息是乱序,而不是如果有错误。 – Tracker1

回答

相关问题