Невозможно сохранить данные с помощью nodejs mongoosejs в mongodb

#node.js #mongodb #mongoose #restify

#node.js #mongodb #mongoose #восстановить

Вопрос:

В настоящее время я безуспешно пытаюсь сохранить документ в mongodb с помощью nodejs и mongoosejs.

Это моя структура кода:

Структура кода

start.js просто инициализирует мое приложение и создает соединение mongod, подробно описанное в mongodb.js . Соединение успешно установлено и его можно увидеть в консоли 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 инструкция «внутри сохранения>>>>>» записывается в консоль, а затем ничего не происходит. Кажется var regModel = new model.RegistrationModel(data); , что оператор завершается с ошибкой без каких-либо ошибок, и я понятия не имею, почему. Любое предложение будет высоко оценено.

образец данных post по запросу :

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

Обновление 24/06

Я начинаю думать, что, поскольку соединение с mongoose устанавливается после инициализации моей модели, эта проблема возникает. Я не могу установить соединение до инициализации модели.

Ниже приведена последовательность инициализации файла. Хотя mongodb.js (соединение mongoose) инициализируется первым, после чего вызывается метод on connect model.js инициализируется.

введите описание изображения здесь

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

С тех пор я понял, что это понимание последовательности загрузки неверно. читайте здесь

Комментарии:

1. Можете ли вы указать, что data происходит, когда это не удается?

2. @dylants добавил образец данных post.

3. Я попытался выполнить ваш код, ту же структуру папок, скопировать вставленный код с этой страницы, как вы упомянули, у меня все работает нормально. У меня есть сохранение mongoose в консоли. Не могли бы вы отправить мне (по электронной почте — из myprofile) свой пример кода.

4. @HarpreetSingh пожалуйста, ознакомьтесь с обновленным вопросом. Ваш адрес электронной почты не является частью вашего профиля.

Ответ №1:

Возможно, это как-то связано с тем, что вы подключаетесь с помощью библиотеки mongodb, а затем пытаетесь сохранить с помощью mongoose. Mongoose использует mongodb в качестве зависимости и, вероятно, не разрешает установленное вами соединение. Удалите свой код mongodb и используйте функцию mongoose connect () для установления соединения с БД.

что-то вроде:


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

Комментарии:

1. Вы также можете проверить, существуют ли соединения с помощью console.log(mongoose.connections . длина). Я считаю, что это не пустой массив.

2. Спасибо за предложение, Юсеф. mongodb.js использует mongoose для подключения mongodb, имя файла вводит в заблуждение.