加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 相当于DataMapper中的find_each

发布时间:2020-12-17 02:00:48 所属栏目:百科 来源:网络整理
导读:有没有办法在DataMapper中执行等效的ActiveRecord#find_each? (find_each将通过批量处理1000而不是将所有内容加载到内存中来迭代查询结果 解决方法 我检查了@michaelKohl建议的dm-chunked_query,但我无法按照我的预期使其工作,它获得整个集合(我希望它使用O
有没有办法在DataMapper中执行等效的ActiveRecord#find_each?

(find_each将通过批量处理1000而不是将所有内容加载到内存中来迭代查询结果

解决方法

我检查了@michaelKohl建议的dm-chunked_query,但我无法按照我的预期使其工作,它获得整个集合(我希望它使用OFFSET LIMIT).所以我写了自己的扩展,这很简单,希望它有所帮助:

class DataMapper::Collection
  def batch(n)
    Enumerator.new do |y|
      offset = 0
      loop do 
        records = slice(offset,n)
        break if records.empty?
        records.each { |record| y.yield(record) }
        offset += records.size
      end
    end
  end
end

# Example
Model.all(:order => :id.asc).batch(1000).each { |obj| p obj }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读