Вернуть JSON с данными из MongoDB - PullRequest
1 голос
/ 12 мая 2011

Я получаю данные из MongoDB следующим образом:

@bs = coll2.find("date" => {"$gte" => initial_date, "$lte" => Time.now.utc})

Работает нормально, но когда я рендеринг @bs, он отправляет пустой.

  render :json => @bs

Если я создаю @ bs.each и отображаю каждый из них как json, это работает, однако я хочу отправить все @bs.

Спасибо

1 Ответ

2 голосов
/ 12 мая 2011

По умолчанию #find возвращает объект Mongo :: Cursor, а не фактические результаты.Сначала вы захотите преобразовать cursur (@bs) в массив с результатами, а затем отобразить его как json.

render :json => @bs.to_a.to_json

Обратите внимание, что поскольку это курсор, если вы либо вернете результаты, либо начнете их перебирать, то вызов to_a не вернет все результаты.Вам нужно будет позвонить rewind!, чтобы сбросить набор результатов:

> @bs.to_a
# => [{"_id" => BSON::ObjectID.....]
> @bs.to_a
# => []
> @bs.rewind!
# => true
> @bs.to_a
# => [{"_id" => BSON::ObjectID.....]
...