#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, имя файла вводит в заблуждение.