类:Mongo::Error::Parser Private
- 继承:
-
对象
- 对象
- Mongo::Error::Parser
- 定义于:
- build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
用于解析 MongoDB 命令响应中可能出现的各种错误形式的类。
服务器可以通过多种方式报告错误:
-
ok: 0响应表示失败。 在较新的服务器中,应设置 code、codeName 和 errmsg 字段。 在较旧的服务器中,有些可能未设置。
-
ok: 1响应,附带写关注错误(writeConcernError 顶级字段)。 这表示响应的节点已成功执行请求,但没有足够的其他节点成功执行请求,无法满足写关注。
-
ok:带有 writeErrors 顶级字段的1响应。 这可以在批量写入中获得,也可以在非批量写入中获得。 在非批量写入中,writeErrors 列表中应该只有一个错误。 出现多个错误的情况由 BulkWrite::Result 处理。
-
ok:带有 writeConcernErrors 顶级字段的1响应。 它只能在批量写入中获得,并由 BulkWrite::Result 而不是此类处理。
请注意,writeErrors 没有 codeName 字段,它们仅提供代码和消息。 同样,writeConcernErrors 可能不提供代码名称。
常量摘要
SdamErrorDetection 中包含的常量
SdamErrorDetection::NODE_RECOVERING_CodeS 、 SdamErrorDetection::NODE_SHUTTING_down_CodeS 、 SdamErrorDetection::NOT_MASTER_CodeS
实例属性摘要折叠
-
# code ⇒ 整数
只读
private
从文档中解析的错误代码。
-
# code_name ⇒ string
只读
private
从文档中解析的错误代码名称。
-
# document ⇒ BSON::Document
只读
private
返回的文档。
-
# labels ⇒ Array<String>
只读
private
与错误相关的标签集。
-
# message ⇒ string
只读
private
在引发的异常中使用的完整错误消息。
-
#replies ⇒ Array<Protocol::Message>
只读
private
消息回复。
-
# server_message ⇒ string
只读
private
从响应中解析出服务器返回的错误消息。
- # wtimeout ⇒ 对象 只读 private
类方法摘要折叠
实例方法摘要折叠
-
#initialize (document, replies = nil, options = nil) ⇒ 解析器
构造函数
private
使用返回的文档创建新的解析器。
-
# write_concern_error? ⇒ true | false
文档是否包含写关注错误。
-
# write_concern_error_code ⇒ 整数 | nil
写关注错误的错误代码(如果存在写关注错误并具有代码)。
-
# write_concern_error_code_name ⇒ string | nil
如果写关注(write concern)错误存在且具有代码名称,则为写关注(write concern)关注错误的代码名称。
-
# write_concern_error_document ⇒ 哈希 | nil
返回服务器报告的写关注错误文档(如果有)。
-
# write_concern_error_labels ⇒ Array<String> | nil
private
写关注错误(如果存在写关注错误)。
SdamErrorDetection 中包含的方法
#node_recovering? , #node_shutting_down? , #not_master?
构造函数详情
#initialize (文档, replies = nil, options = nil) ⇒解析器
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
使用返回的文档创建新的解析器。
在传统模式下,不会检查文档的 code 和 codeName 字段,因为状态 (ok: 1 ) 不是文档的一部分,并且无法使用文档本身区分成功和失败的响应,并且成功响应可以合法地将 { code: 123 , codeName: 'foo' } 作为用户插入的文档的内容。 传统服务器版本不填写 code 或 codeName,因此不读取它们不会丢失信息。
122 123 124 125 126 127 128 129 130 131 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第122行 def 初始化(文档, 回复 = nil, = nil) @document = 文档 || {} @replies = 回复 @options = if .dup else {} end.冻结 parse! end |
实例属性详细信息
# code ⇒整数(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回值 从文档中解析出的错误代码。
88 89 90 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第88行 def 代码 @code end |
# code_name ⇒ string (只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回值 从文档中解析出的错误代码名称。
92 93 94 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第92行 def code_name @code_name end |
# document ⇒ BSON::Document (只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回 返回的文档。
73 74 75 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第73行 def 文档 @document end |
# labels ⇒ Array<String> (只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回与错误关联的标签集。
96 97 98 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第96行 def labels @labels end |
# message ⇒ string (readonly)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回要在引发的异常中使用的完整错误消息。
77 78 79 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第77行 def @message end |
#replies ⇒ Array<Protocol::Message> (readonly)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回 回复消息。
84 85 86 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第84行 def 回复 @replies end |
# server_message ⇒ string (只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回值 从响应中解析出的服务器返回的错误消息。
81 82 83 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第81行 def @server_message end |
# wtimeout ⇒对象(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
99 100 101 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第99行 def wtimeout @wtimeout end |
类方法详细信息
。 build_message (code: nil, code_name: nil, message: nil) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第177行 def (代码: nil, code_name: nil, 消息: nil) if code_name && 代码 " [ #{ code } : #{ code_name } ]: #{ } " elsif code_name # 如果有代号,这种情况绝对不应该发生 # 还应该提供代码。 # 为了完整性起见,处理这种情况。 " [ #{ code_name } ]: #{ } " elsif 代码 " [ #{ code } ]: #{ } " else end end |
实例方法详细信息
# write_concern_error? ⇒ true | false
返回文档是否包含写关注错误。 故障可能具有顶级错误和写关注错误,或两者之一。
139 140 141 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第139行 def write_concern_error? !!write_concern_error_document end |
# write_concern_error_code ⇒整数 | nil
如果存在写关注错误并具有代码,则返回该写关注错误的错误代码。
157 158 159 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第157行 def write_concern_error_code write_concern_error_document && write_concern_error_document[' code '] end |
# write_concern_error_code_name ⇒ string | nil
返回 如果写关注错误存在且具有代码名称,则为写关注错误的代码名称。
166 167 168 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第166行 def write_concern_error_code_name write_concern_error_document && write_concern_error_document[' codeName '] end |
# write_concern_error_document ⇒哈希 | nil
返回服务器报告的写关注错误文档(如果有)。
148 149 150 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第148行 def write_concern_error_document 文档[' writeConcernError '] end |
# write_concern_error_labels ⇒ Array<String> | nil
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
写关注错误(如果存在写关注错误)。
172 173 174 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第172行 def write_concern_error_labels write_concern_error_document && write_concern_error_document['errorLabels'] end |