2013-09-14 2 views
0

Я пытаюсь вставить объект в Mongo, используя собственную библиотеку узлов. У меня есть объект, который имеет свойство массива, которое имеет 1620 объектов. В документации говорится, что у mongo есть поддержка для вложения до 100 уровней, на которые я не сталкиваюсь. Объекты в массиве - это просто объекты, у них нет массивов. Размер всего документа со всеми элементами составляет всего 456 КБ. Если я ограничу массив до 788 объектов, они будут сохранены в базе данных, но это приведет к сбою приложения. Я столкнулся с проблемой с родной библиотекой mongo для узла? Отсутствует настройка базы данных?Ограничение массива Mongo

var droplist = convertOptionList(data); 

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { 
    if(err) {console.log('error'); throw err;} 

    var collection = db.collection('droplist'); 

    collection.insert(droplist, function(err, objects) { 
    if(err) { 
     console.log('error'); 
     throw err; 
    } 
    //never see this message. app crashes but with fewer items the query passes 
    console.log("A-Ok"); 
    }); 
    db.close(); 
}); 

Update

Разработка версии кода. Незначительное изменение для перемещения db.close() внутри обратного вызова для вставки и предотвращения вызова db.close до того, как все объекты были вставлены.

var droplist = convertOptionList(data); 

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { 
    if(err) {console.log('error'); throw err;} 

    var collection = db.collection('droplist'); 

    collection.insert(droplist, function(err, objects) { 
    if(err) { 
     console.log('error'); 
     throw err; 
    } 
    db.close(); 
    }); 
}); 
+1

Какая ошибка? – WiredPrairie

+0

Должен был уточнить. Я запускал приложение с супервизором, и я видел, как приложение сработало и перезапустилось, когда запрос был выполнен, поэтому на самом деле я не видел сообщение об ошибке от Mongo. – ThrowsException

ответ

0

Rookie ошибка. Я поместил свой db.close() вне моего обратного вызова, чтобы соединение закрывалось до того, как запрос мог выполнить/завершить. Перемещено мое db.close() в обратный вызов, и теперь все работает.

Смежные вопросы