使用RABL和Mongoid / Moped进行多个数据库查询

时间:2013-02-15 01:00:08

标签: mongoid rabl moped

我有一个使用rabl和mongoid 3.1.0的简单应用程序,通过以下操作:

# index
@products = current_shop.products

rabl代码如下所示:

# index.json.rabl
collection @products
extends 'api/products/show'

# show.json.rabl
object @product
attributes :id

当我点击它时,日志显示4个与@products相关的请求:

MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (0.5682ms)
MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (1.1139ms)
MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.4492ms)
MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.4332ms)

当我这样做时:

@products = current_shop.products.search(params[:query])
render text: @products.map(&:name).join(",")

我只收到一个与@products相关的请求:

MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"shop_id"=>"511c7866fd896b1908000002"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.4611ms)

重复的查询看起来很奇怪,有谁知道为什么会这样?它不会从我看到的内容中调用子对象,只是稍微不同的集合查询。

1 个答案:

答案 0 :(得分:0)

很多人都遇到同样的问题。最有可能是因为rabl配置问题。正如上面的Aymeric所推荐的,只需: @products = current_shop.products.to_a