如何从没有“每个”块的 Mongoid::Criteria 获取结果数组

Posted

技术标签:

【中文标题】如何从没有“每个”块的 Mongoid::Criteria 获取结果数组【英文标题】:How to get the resultant array from a Mongoid::Criteria without an "each" block 【发布时间】:2011-05-28 18:38:46 【问题描述】:

我们的应用程序大量使用 ajax,因此我们在所有视图中都有类似 var items = #@items.to_json 的语句。现在@items 在控制器中被设置为@items=Item.all。问题是 @itemsMongoid::Criteria 并且它没有 .to_json 方法。所以,它在渲染视图时抛出了一个错误。有没有一种简单的方法可以将此条件对象转换为数组,而无需使用 @items.collect |i| i 之类的代码

【问题讨论】:

【参考方案1】:

FWIW,至少从 Mongoid 4.0 开始,就有了 as_json 实例方法:

Person.where(:title => "Sir").as_json

参考:http://rdoc.info/github/mongoid/mongoid/Mongoid/Criteria#as_json-instance_method

【讨论】:

【参考方案2】:

使用条件中的#entries 方法进行请求:

@items = Item.all.entries

【讨论】:

你好 shingara,反之亦然吗?我的意思是将数组转换为 Mongoid::Criteria。【参考方案3】:

实际上,我正在应用的解决方案是在一个数组中进行转换,所以我仍然可以使用标准的力量,然后得到结果。转换成数组后,就可以在json中转换了

@items.to_a #给你记录

@items.to_a.to_json #给你最终的json

【讨论】:

以上是关于如何从没有“每个”块的 Mongoid::Criteria 获取结果数组的主要内容,如果未能解决你的问题,请参考以下文章

如何从没有索引的数据框中选择值

如何从没有子域的url中获取父域[重复]

从没有 sprintf() 或模的整数中提取数字

Python:如何从没有标题的csv中提取数据[重复]

如何从没有数组名称的android中的json中获取数据?

如何从没有屏幕的机器上获取屏幕分辨率?