2013-09-14 3 views
0

Я вставляю данные в mongodb с использованием mongodb драйвера в nodejs.mongodb вставка поддокументов как: [Объект]

var mongodb = require('mongodb'); 

var insert = function(uri, collectionName, data, next) { 
    mongodb.MongoClient.connect(uri, function(err, driverDb) { 
     if(err) { 
     next(err); 
     } else { 
     driverDb.collection(collectionName).insert(data,function(err,result) { 
      if(err) { 
       next(err); 
      } else { 
       driverDb.close(function (err) { 
        if(err) { 
         next(err); 
        } else { 
         next(null,result); 
        } 
       }); 
      } 
     }); 
     } 
    }); 
}; 


insert('mongodb://localhost/mean-test','testcol',{ 
      a : 'Apple', 
      b : [ { ba: 'Boy' }, {bb : 'Bird'} ] 
     }, function(err,models) { 
      console.log(models); 
     }); 

Полученный результат в следующем:

[{a:'Apple', b : [[Object]] }] 

Как я этого добиться:

[{_id:ObjectId("someid"), a:'Apple', b : [{_id:ObjectId("someid"), ba: 'Boy' }, {_id:ObjectId("someid"), bb : 'Bird'}] }] 

Пожалуйста, обратите внимание, что я не хочу использовать любой другой модуль НПМ кроме mongodb. также я хочу вставить в один запрос db.

ответ

2

Ваши объекты вставляются правильно, просто console.log показывает только два уровня детализации объекта по умолчанию. Для того, чтобы показать все уровни объекта необходимо вызвать util.inspect напрямую, так что вы можете контролировать, что:

console.log(util.inspect(models, {depth: null})); 
+0

когда я console.log (модели [0] .b [0] ._ идентификатор), я получаю не определено. почему так? – codeofnode

+0

Элементы '' 'массива' 'не будут иметь свойства' _id', пока вы вручную не включите их в объект, который вы передаете 'insert'. – JohnnyHK

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