Я пытаюсь использовать 'mongo-ruby-driver' для какого-то проекта.Работает нормально, кроме случаев, когда я вызываю to_json для объекта Монго.Он дает хорошо сформированный json, но не преобразует BSON :: Code в читаемое значение, в результате чего получается JSON.
Вместо отображения кода, он показывает что-то вроде
#<BSON::Code:0x00000100af6fa8>
Кто-нибудь пробовал.Мы высоко ценим любой идентификатор помощи.
ОБНОВЛЕНИЕ
Вот фрагмент кода:
@ records - переменная, которая содержит массив документов MongoDB в хэше.
Когда я вызываю to_json, он выдает все как положено.за исключением ключа, который содержит BSON :: Code (означает код JavaScript).например, рассмотрим следующий документ:
{
"_id" : "contains",
"value" : function( obj, target ) { return obj.indexOf(target) != -1; };
}
Запрос того же документа из ruby дает вывод, например:
{
"_id"=>"contains",
"value"=><BSON::Code:2160165280 @data="function( obj, target ) { return obj.indexOf(target) != -1; };" @scope="{}">
}
и вызов to_json для этого дает следующее:
{"_id":"contains","value":"#<BSON::Code:0x00000100b54658>"}
вот в чем проблема.Вместо того, чтобы получить фактический код для ключа 'value', я получаю объект ruby в виде строки.
Вызывая метод кода в BSON :: Code, мы можем преобразовать его в код.Но для этого мне нужно зациклить документы mongo, проверить значения для каждого ключа, вызвать код для него, если это объект BSON :: Code, и затем присвоить его обратно ключу.И наконец мы можем вызвать to_json.Но я не хочу столько накладных расходов.Мне нужно, чтобы to_json сам позаботился об этом.