类:Mongo::Grid::FSBucket::Stream::Read

继承:
对象
  • 对象
显示全部
包括:
可枚举
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/read.rb

Overview

从 FSBucket 读取文件的流。

由于:

  • 2.1.0

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (fs, options) ⇒读取

创建用于从 FSBucket 读取文件的流。

例子:

创建流。

Stream::Read.new(fs, options)

参数:

  • fs ( FSBucket )

    GridFS 存储桶对象。

  • 选项 (哈希)

    读取流选项。

选项哈希 ( options ):

  • :file_info_doc ( BSON::Document )

    仅供内部驱动程序使用。 用作文件信息的 BSON 文档。

由于:

  • 2.1.0



56
57
58
59
60
61
62
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第56行

def 初始化(fs, 选项)
  @fs = fs
  @options = 选项.dup
  @file_id = @options.删除(:file_id)
  @options.冻结
  @open = true
end

实例属性详细信息

# file_idBSON::ObjectId , Object (readonly)

返回 file_id 正在读取的文件的 ID。

返回:

  • ( BSON::ObjectId , Object )

    file_id 正在读取的文件的 ID。

由于:

  • 2.1.0



42
43
44
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第42行

def file_id
  @file_id
end

# fsFSBucket (只读)

返回 fs 此流从中读取数据的 fs 存储桶。

返回:

  • ( FSBucket )

    fs 此流从中读取数据的 fs 存储桶。

由于:

  • 2.1.0



32
33
34
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第32行

def fs
  @fs
end

# options哈希(只读)

返回 options 流选项。

返回:

  • (哈希)

    options 流选项。

由于:

  • 2.1.0



37
38
39
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第37行

def 选项
  @options
end

实例方法详细信息

# closeBSON::ObjectId , Object

关闭读取流。

如果流已关闭,则此方法不执行任何操作。

例子:

关闭流。

stream.close

返回:

  • ( BSON::ObjectId , Object )

    文件 ID。

由于:

  • 2.1.0



125
126
127
128
129
130
131
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第125行

def 关闭
  if @open
    查看.close_query
    @open = false
  end
  file_id
end

#已关闭?true , false

流是否已关闭。

例子:

流是否已关闭。

stream.closed?

返回:

  • ( true , false )

    流是否已关闭。

由于:

  • 2.1.0



141
142
143
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第141行

def 已关闭?
  !@open
end

#每个{|Each| ... } ⇒枚举器

遍历从 FSBucket 流式传输的数据段。

例子:

遍历数据段。

stream.each do |data|
  buffer << data
end

收益参数:

  • 每个 (哈希)

    文件数据段。

返回:

  • (枚举器)

    枚举器。

引发:

由于:

  • 2.1.0



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第78行

def 
  确保可读!
  信息 = file_info
  num_chunks = (信息.长度 + 信息.chunk_size - 1) / 信息.chunk_size
  num_read = 0
  if block_given?
    查看.each_with_index.化简(reduce)(0) do |length_read, (doc, 索引(index))|
      数据段 = 网格::file::数据块.new(doc)
      validate!(索引(index), num_chunks, 数据段, length_read)
      数据 = 数据段.数据.数据
      产量 数据
      num_read += 1
      length_read += 数据.size
    end.点击 do
      if num_read < num_chunks
        提高 错误::MissingFileChunk.new(num_chunks, num_read)
      end
    end
  else
    查看.to_enum
  end
end

# file_infoFile::Info

注意:

文件信息缓存在流。 对 file_info 的后续调用将返回与第一次调用返回的相同信息,并且不会再次查询数据库。

获取正在读取的文件的文件集合文件信息文档。

返回:

由于:

  • 2.1.0



179
180
181
182
183
184
185
186
187
188
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第179行

def file_info
  @file_info ||= 开始
    doc = 选项[:file_info_doc] || fs.files_collection.find(_id: file_id).first
    if doc
      file::信息.new(选项::映射器.转换(Transform)(doc, file::信息::mappings.反转))
    else
      nil
    end
  end
end

#读取string

读取所有文件数据。

例子:

读取文件数据。

stream.read

返回:

  • ( string )

    文件数据。

引发:

由于:

  • 2.1.0



111
112
113
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第111行

def 
  to_a.连接 (JOIN)
end

# read_preferenceBSON::Document

注意:

此方法始终返回 BSON::Document 实例,即使构造函数将 :read 的类型指定为哈希,而不是 BSON::Document。

获取读取偏好。

返回:

  • ( BSON::Document )

    读取偏好。 该文档可能包含以下字段:

    • :模式—读取偏好(read preference),指定为符号;有效值为: 主节点 (primary node in the replica set):primary_preferred: secondary_preferred:nearest

    • :tag_sets – 哈希数组。

    • :local_threshold

由于:

  • 2.1.0



158
159
160
161
162
163
164
165
166
167
# File ' 构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/read.rb', 第158行

def read_preference
  @read_preference ||= 开始
    pref = 选项[:read] || fs.read_preference
    if BSON::文档 === pref
      pref
    else
      BSON::文档.new(pref)
    end
  end
end