2016-02-17 3 views
0

У меня есть объект, который я создал в файле JavaScript, который по существу выглядит следующим образом.Вставка объекта в файл JavaScript в mongo

{ name1: 
    {'category 1' : {'stat1': 1, 'stat 2': 1}, 
     'category 2' : {'stat1': 1, 'stat 2': 1}}, 
    name2...} 

И я хочу вставить этот объект в мою базу данных в монго. Ошибка, которую я получаю, это

Error: invalid schema, expected mongodb 

, который указывает на эту строку в моем коде.

MongoClient.connect(url, function (err, db){ 
    if (err)... 
    else{ 
     var collection = db.collection("mydb"); 
     //this function is giving an error 
     collection.insert(myObj, function(err, result) { 
     if(err){console.log(err);} 
     else... 

Я подозреваю, что это может быть потому, что мой объект находится в несовместимом формате для Монго для обработки, в этом случае мой вопрос заключается в том, чтобы преобразовать его в удобный формат?

ответ

0

Если вы над головой jsonlint.com

вы обнаружите, что ваш объект не является допустимым JSON объект.

Чтобы создать действительный JSON объект, который вы можете сделать это:

var myObj = {}; 
myObj.name1 = {}; 
myObj.name1.category1 = {}; 
myObj.name1.category1.stat1 = 1; 
myObj.name1.category1.stat2 = 1; 
myObj.name1.category2 = {}; 
myObj.name1.category2.stat1 = 1; 
myObj.name1.category2.stat2 = 1; 

В идеале name1 объект должен быть массив, который затем должен содержать category1 & category2 объекты как элементы массива. Также myObj также должен быть массивом, который должен содержать объекты name1 и name2 как элемент. Затем вы можете использовать функцию insertMany MongoDB для вставки массива.

Так что у вас есть массив как:

var myObjs = []; 
var obj1 = {}; 
obj1.name1 = {}; 
obj1.name1.category1 = {}; 
obj1.name1.category1.stat1 = 1; 
obj1.name1.category1.stat2 = 1; 
obj1.name1.category2 = {}; 
obj1.name1.category2.stat1 = 1; 
obj1.name1.category2.stat2 = 1; 
myObjs.push(obj1); 
collection.insertMany(myObjs, function(err, result){ 
    if(err) console.log(err); 
    else console.log('Documents inserted successfully'); 
}); 

Просто всегда убедитесь, что ваш объект является действительным JSON объекта перед вставкой.

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