javascript - MongoDb 通过 Node.js native 驱动程序插入未插入

标签 javascript node.js mongodb express

我正在尝试将一些数据保存到 MongoDb 中。我事先遵循了以下示例并验证了它是否有效,但是现在我尝试使用这种“格式”编写自己的测试应用程序,但它不起作用。 MongoDb 不会抛出任何错误,我什至可以从插入回调中检索 doc_id。然而,当我进入 Mongo shell 时,该集合甚至不存在,更不用说文档了。

这是我最初遵循的示例,以便您可以了解我尝试模仿自己的测试应用程序的方式:

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

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

这是我的数据库代码:

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('/');
        }

    });
};

最佳答案

如果@cristkv是对的,你可以尝试在插入操作中添加可选参数写入关注:

owners_collection.insert(owner, {w:1}, function(error, doc){

来源:

http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#insert

http://docs.mongodb.org/manual/core/write-concern/

关于javascript - MongoDb 通过 Node.js native 驱动程序插入未插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16865469/

相关文章:

javascript - 重新填充 ng-repeat 表,但保持原样排序

javascript - 为什么我的书没有排列在正确的书架上(React-Redux)?

javascript - 翻转外键关系?

javascript - Sails.js:嵌套的 MongoDB 查询

python - 使用 celery 作为模型层

php - 在 iframe 内获取父页面的 URL

javascript - Rails 3 插件 nested_form 与 JavaScript 方法在嵌套表单中动态添加表单字段

node.js - 在 Eclipse 中启动 Node.js 应用程序(使用 Nodeclipse 插件)会导致 Path Must be a string 错误

javascript - Mongoose findOneAndUpdate 和 upsert 不返回错误,不影响文档

node.js - 查询事件数组以查找我添加的事件是否重叠(Express/Mongoose)