m0sk1t
@m0sk1t
SPA web-developer

Как побороть callback hell в nodejs+mongodb? Поможете понять куда копать в поиске ошибок?

Суть в чем - пытаюсь написать простенькую патчилку БД с таким кодом:
exports.checkVersion = function(serverVersion){
	MongoClient.connect(mn.path(), function(error, database){
		if (!error) {
			database.collection('params').findOne({"name": "version"}, function(err,version){
				var i = 0;
				if(!err && version && version.value) {
					if(serverVersion > version.value) {
						for (i = version.value; i <= serverVersion; ++i){
							var patch = require('./patches/'+i+'_patch.js');
							patch.execPatch(database, i, function(err){
								console.log(err);
							});
						}
					}
				}
				else {
					for (i = 0; i <= serverVersion; i++){
						var patch = require('./patches/'+i+'_patch.js');
						patch.execPatch(database, i, function(err){
							console.log(err);
						});
					}
				}
			})
		}
		else { console.dir(error); }
	});
};


Пример кода самого патча:
exports.execPatch = function(database, serverVersion, callback){
	database.collection('params').insert({"name":"version","value":serverVersion},function(err){callback(err);});
	...ну и ещё пара идентичных операций...
}


Так вот. Первый патч выполняется полностью и без ошибок, а второй не выполняется вобще... Ну и вот что он мне показывает:
/home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/connection/base.js:245
        throw message;      
              ^
TypeError: undefined is not a function
    at /home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/db.js:1000:14
    at /home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/db.js:445:7
    at /home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/cursor.js:163:16
    at commandHandler (/home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/cursor.js:709:16)
    at /home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/db.js:1846:9
    at Server.Base._callHandler (/home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/connection/base.js:445:41)
    at /home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/connection/server.js:478:18
    at MongoReply.parseBody (/home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
    at null.<anonymous> (/home/m0sk1t/WebStormProjects/project/node_modules/mongodb/lib/mongodb/connection/server.js:436:20)
    at EventEmitter.emit (events.js:95:17)

Ни одного из моих файлов в листинге нет, подскажите куда копать?
  • Вопрос задан
  • 2648 просмотров
Решения вопроса 1
m0sk1t
@m0sk1t Автор вопроса
SPA web-developer
Бейте идиота и гоните его в отпуск... Разобрался =) Дело было в другом участке кода
database.collection('allMarks').update(...)
переделал на
database.collection('allMarks',function(err, allMarks){allMarks.update(...);}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы