无法使用nodejs mongoosejs将数据保存到mongodb

时间:2014-06-22 12:11:06

标签: node.js mongodb mongoose restify

我目前尝试使用nodejs和mongoosejs将文档保存到mongodb失败。

这是我的代码结构:

code Structure

start.js只是初始化我的应用并创建mongodb.js中详述的mongod连接。连接已成功建立,可以在mongodb控制台中看到。

这是我的model.js

    var mongoose = require('mongoose');

var regSceham = new mongoose.Schema({
    userId: String,
    name:String,
    mob:String,
    email:String
})

var RegistrationModel = mongoose.model('registration', regSceham);

exports.RegistrationModel = RegistrationModel;

这是我的datalayer.js:

var mongoose = require('mongoose');
var mongodb = require('./mongodb');
var model = require('./model');
//var RegistrationModel = mongoose.model('RegistrationModel');

/////////////////////////////////

function save(data){
    console.log('inside save >>>>> ' + data);
    var regModel = new model.RegistrationModel(data);
    console.log('after model');
    regModel.save(function(err,regModel){
        console.log('inside mongoose save');
        if(err)
            console.log(err);
    });


}

require('./model')

exports.save = save;

当我在datalayer.js中调用save方法时,“inside save>>>>>”语句记录到控制台,然后没有任何反应。似乎var regModel = new model.RegistrationModel(data);语句失败没有任何错误,我不知道为什么。任何建议都将受到高度赞赏。

按要求提供发布数据:

{
    "userId":"tesrwetId",
    "name":"Test",
    "mob":"2536245632",
    "email":"ashdjas@sa.com"
}

更新24/06

我开始认为,因为在我的模型初始化之后建立了与mongoose的连接,所以遇到了这个问题。在模型初始化之前,我无法获得连接。

以下是文件初始化序列。虽然首先启动了mongodb.js(mongoose连接),但是在初始化model.js之后会调用on connect方法。

enter image description here

mongodb.js文件:

console.log('mongodb....');
var mongoose = require('mongoose');
var configure = require('./configure');

// create database

//console.log('sadasdasdsa >>>>>>>' + configure.creds.mongodb)
mongoose.connect(configure.creds.mongodb);

mongoose.connection.on('connected', function () {
  console.log('MOngodb connection open to ' + configure.creds.mongodb);
  require('./model');
});

// If the connection throws an error
mongoose.connection.on('error',function (err) {
  console.log('MOngodb connection error: ' + err);
});

// When the connection is disconnected
mongoose.connection.on('disconnected', function () {
  console.log('MOngodb connection disconnected');
});

process.on('SIGINT', function() {
  mongoose.connection.close(function () {
    console.log('MOngodb connection disconnected through app termination');
    process.exit(0);
  });
});

require('./model');

更新28/06

我已经意识到这种关于加载顺序的理解不正确。阅读here

1 个答案:

答案 0 :(得分:0)

可能与您有关,使用mongodb库进行连接,然后尝试使用mongoose进行保存。 Mongoose有mongodb作为依赖,可能无法解决你已经建立的联系。删除mongodb代码并使用mongoose connect()函数建立数据库连接。

类似的东西:

mongoose.connect('mongodb://localhost:port/test', function(err){ if(err) console.log(err); else console.log('Connected'); });