我目前尝试使用nodejs和mongoosejs将文档保存到mongodb失败。
这是我的代码结构:
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"
}
我开始认为,因为在我的模型初始化之后建立了与mongoose的连接,所以遇到了这个问题。在模型初始化之前,我无法获得连接。
以下是文件初始化序列。虽然首先启动了mongodb.js(mongoose连接),但是在初始化model.js之后会调用on connect方法。
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');
我已经意识到这种关于加载顺序的理解不正确。阅读here
答案 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');
});