类:Mongo::Grid::FSBucket::Stream::Read
Overview
从 FSBucket 读取文件的流。
实例属性摘要折叠
-
# file_id ⇒ BSON::ObjectId, Object
只读
File_id 正在读取的文件的 ID。
-
#fs ⇒ FSBucket
只读
Fs 此流从中读取数据的 fs 存储桶。
-
# options ⇒ 哈希
只读
选项 流选项。
实例方法摘要折叠
-
# close ⇒ BSON::ObjectId, Object
关闭读取流。
-
#已关闭? ⇒ true, false
流是否已关闭。
-
#每个{|Each| ... } ⇒ 枚举器
遍历从 FSBucket 流式传输的数据段。
-
# file_info ⇒ File::Info
获取正在读取的文件的文件集合文件信息文档。
-
#initialize (fs, options) ⇒ 读取
构造函数
创建用于从 FSBucket 读取文件的流。
-
#读取⇒ string
读取所有文件数据。
-
# read_preference ⇒ BSON::Document
获取读取偏好。
构造函数详情
#initialize (fs, options) ⇒读取
创建用于从 FSBucket 读取文件的流。
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 56 def 初始化(fs, ) @fs = fs @options = .dup @file_id = @options.删除(:file_id) @options.冻结 @open = true @timeout_holder = CsotTimeoutHolder.new( operation_timeups: { operation_timeout_ms: [:timeout_ms], embedded_timeout_ms: fs.database.timeout_ms } ) end |
实例属性详细信息
# file_id ⇒ BSON::ObjectId , Object (readonly)
返回 file_id 正在读取的文件的 ID。
42 43 44 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 42 def file_id @file_id end |
# fs ⇒ FSBucket (只读)
返回 fs 此流从中读取数据的 fs 存储桶。
32 33 34 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 32 def fs @fs end |
# options ⇒哈希(只读)
返回 options 流选项。
37 38 39 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 37 def @options end |
实例方法详细信息
# close ⇒ BSON::ObjectId , Object
关闭读取流。
如果流已关闭,则此方法不执行任何操作。
131 132 133 134 135 136 137 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 131 def 关闭 if @open 查看.close_query @open = false end file_id end |
#已关闭? ⇒ true , false
流是否已关闭。
147 148 149 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 147 def 已关闭? !@open end |
#每个{|Each| ... } ⇒枚举器
遍历从 FSBucket 流式传输的数据段。
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 84 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_info ⇒ File::Info
注意:
文件信息缓存在流。 对 file_info 的后续调用将返回与第一次调用返回的相同信息,并且不会再次查询数据库。
获取正在读取的文件的文件集合文件信息文档。
185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 185 def file_info @file_info ||= 开始 doc = [:file_info_doc] || fs.files_collection.find( { _id: file_id }, { timeout_ms: @timeout_holder.剩余超时毫秒! } ).first if doc file::信息.new(选项::映射器.转换(Transform)(doc, file::信息::mappings.反转)) else nil end end end |
#读取⇒ string
读取所有文件数据。
117 118 119 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 117 def 读 to_a.连接 (JOIN) end |
# read_preference ⇒ BSON::Document
注意:
此方法始终返回 BSON::Document 实例,即使构造函数将 :read 的类型指定为哈希,而不是 BSON::Document。
获取读取偏好。
164 165 166 167 168 169 170 171 172 173 |
# File 'lib/ Mongo/grid/ 流/read.rb', line 164 def read_preference @read_preference ||= 开始 pref = [:read] || fs.read_preference if BSON::文档 === pref pref else BSON::文档.new(pref) end end end |