По какой-то причине функция обратного вызова никогда не вызывается при попытке сохранить данные в базе данных MongoDB с использованием Mongoose. Сначала я подумал, что код ошибки не был запущен, но затем я проверил, была ли вообще включена функция обратного вызова, и это не так! И ничего не сохраняется в базе данных. Я даже не вижу файл с именем client-db в папке, где хранятся другие базы данных MongoDB (через командную строку) - может быть, проблема?Ошибка обратного вызова Mongoose никогда не достигалась при сохранении
Я пробовал разные решения аналогичных проблем, но до сих пор ничего не работало. У кого-нибудь есть идеи, что я делаю неправильно? Я прибегаю к любой помощи!
Вот соответствующие части моего кода:
клиент-db.js:
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/client-db', function(){
console.log("Client DB: connected"); // This is shown
});
module.exports = mongoose;
//module.exports = db; // Another problem was solved by this, but didn't work for me
сюжетных data.js:
var db = require('client-db');
var plotDataSchema = db.Schema({
time: {type: Number, required: true},
value: {type: Number}
});
var PlotData = db.model('PlotData', plotDataSchema);
module.exports = PlotData;
controller.js:
var PlotData = require('plot-data');
//data is an object with time and value
var plotData = new PlotData({
time: data.time,
value: data.value
});
plotData.save(function(err){
console.log('Entered callback'); // Never shown
if(err){
console.log(err); // Never shown
//return handleErrror(err); // Different things I tried when I thought the error handling was the problem - didn't change anything
//return next(err);
}else{
console.log('Plot data saved in client db'); // Never shown
}
});
Передача 'err' в качестве параметра в вашем обратном вызове mongoose.connect(), например. 'var db = mongoose.connect ('mongodb: // localhost/client-db', function (err) {'. Затем внутри обратного вызова определяется 'err' и если да, то какое значение? – JoGoFo
Это дало мне ошибка, и я понял, что мне просто нужно вручную запустить mongod из командной строки перед запуском приложения node.js. Проблема решена - спасибо большое :) – KMK
Всегда помогает :) – JoGoFo