2013-03-18 2 views
4
var obj = {}; 
obj.url = hostNames[i]; 
obj.statusCode = res.statusCode; 
obj.headers = res.headers; 

db.collection.save(JSON.stringify(obj, null, 2)); 

Я в настоящее время пытается запросить ответ HTTP через Node.js, а затем разборе, что выход в MongoDB с JSON.stringify (метод, который преобразует вещи в формат документа JSON). По какой-то причине, я получаю некоторые странные выход в MongoDB, то выходит что-то вроде этого:Установка JSON.Stringified данных в MongoDB

> db.scrape.find() 
{ "_id" : ObjectId("51472849650593014a3c20da"), "0" : "{", "1" : "\n", "2" : " ", "3" : " ", "4" : "\"", "5" : "u", "6" : "r", "7" : "l", "8" : 

То, что я думаю, что он делает то, что он интерпретирует каждый символ в качестве новой переменной. Что я сделал неправильно в своем коде?

+3

Я немного смущен здесь: почему вы пытаетесь сохранить JSON-строку, а не сам документ? Поскольку Mongo ожидает, что вы предоставите _document_, он будет использовать только более разумную вещь для предоставленной строки - анализирует ее как массив. Вы должны хотя бы сохранить его, как ... 'db.collection.save ({res: JSON.stringify (obj, null, 2)});'. Но, честно говоря, вы пытаетесь сделать здесь работу Монго: почему бы не форматировать этот объект при его выпуске? – raina77ow

+0

Спасибо за ответ. Я думаю, было бы удобнее иметь JSON.stringify() для форматирования импорта. Что бы вы сделали в моем случае? Имейте в виду, что у меня есть три объекта: 'url',' statusCode' и 'headers' для каждого сайта. «Url» является первичным ключом для каждого ответа «веб-сайта». – theGreenCabbage

ответ

8

Зачем строчить объект? API ожидает объект javascript.

Вобще:

db.collection.save(obj); 
+0

Мой Бог. Позвольте мне попробовать. – theGreenCabbage

+0

Я такой глупый гусь. Это сработало. Большое спасибо lftah. – theGreenCabbage

1

Вы проверили выход JSON.stringify (obj, null, 2)? Я предполагаю, что это вернет ожидаемый результат.

Есть две возможных причины этой ошибки: Способ хранения документа является неправильным или пути документ извлекается неправильно

В http://docs.mongodb.org/manual/tutorial/getting-started/ (MongoDB получения стартера) нет никакого упоминания о преобразовании документы для json перед вызовом вставки или что-то еще.

Вы пытались хранить его как db.collection.save ({'content': JSON.stringify (obj, null, 2)}) ;?

1

У меня была такая же проблема в проекте Метеор. «response» - это строка, содержащая данные в формате json. Метод «save» не работает. Я создал новый документ просто:

obj = JSON.parse(response); 
db.collection.insert(obj); 
Смежные вопросы