类:Mongo::Error::Parser Private

继承:
对象
  • 对象
显示全部
包括:
SdamErrorDetection
定义于:
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 可能不提供代码名称。

由于:

  • 2.0.0

常量摘要

SdamErrorDetection 中包含的常量

SdamErrorDetection::NODE_RECOVERING_CodeSSdamErrorDetection::NODE_SHUTTING_down_CodeSSdamErrorDetection::NOT_MASTER_CodeS

实例属性摘要折叠

类方法摘要折叠

实例方法摘要折叠

SdamErrorDetection 中包含的方法

#node_recovering? , #node_shutting_down? , #not_master?

构造函数详情

#initialize (文档, replies = nil, options = nil) ⇒解析器

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

使用返回的文档创建新的解析器。

在传统模式下,不会检查文档的 code 和 codeName 字段,因为状态 (ok: 1 ) 不是文档的一部分,并且无法使用文档本身区分成功和失败的响应,并且成功响应可以合法地将 { code: 123 , codeName: 'foo' } 作为用户插入的文档的内容。 传统服务器版本不填写 code 或 codeName,因此不读取它们不会丢失信息。

例子:

创建新的解析器。

Parser.new({ 'errmsg' => 'failed' })

参数:

  • 文档 ( BSON::Document )

    返回的文档。

  • 回复 (Array<Protocol::Message>) (默认为: nil

    消息回复。

  • 选项 哈希 (默认为: nil

    选项。

选项哈希 ( options ):

  • :legacy ( true | false )

    文档和回复是否来自旧版( 3.2之前的版本) 响应

由于:

  • 2.0.0



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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回值 从文档中解析出的错误代码。

返回:

  • ( Integer )

    从文档中解析的错误代码。

由于:

  • 2.6.0



88
89
90
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第88行

def 代码
  @code
end

# code_namestring (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回值 从文档中解析出的错误代码名称。

返回:

  • ( string )

    从文档中解析的错误代码名称。

由于:

  • 2.6.0



92
93
94
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第92行

def code_name
  @code_name
end

# documentBSON::Document (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 返回的文档。

返回:

  • ( BSON::Document )

    返回的文档。

由于:

  • 2.0.0



73
74
75
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第73行

def 文档
  @document
end

# labelsArray<String> (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回与错误关联的标签集。

返回:

  • ( Array<String> )

    与错误相关的标签集。

由于:

  • 2.7.0



96
97
98
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第96行

def labels
  @labels
end

# messagestring (readonly)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回要在引发的异常中使用的完整错误消息。

返回:

  • ( string )

    在引发的异常中使用的完整错误消息。

由于:

  • 2.0.0



77
78
79
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第77行

def message
  @message
end

#repliesArray<Protocol::Message> (readonly)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 回复消息。

返回:

由于:

  • 2.0.0



84
85
86
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第84行

def 回复
  @replies
end

# server_messagestring (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回值 从响应中解析出的服务器返回的错误消息。

返回:

  • ( string )

    从响应中解析出服务器返回的错误消息。

由于:

  • 2.0.0



81
82
83
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/parser.rb', 第81行

def server_message
  @server_message
end

# wtimeout对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



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 build_message(代码: nil, code_name: nil, 消息: nil)
  if code_name && 代码
    " [ #{ code } : #{ code_name } ]: #{ message } "
  elsif code_name
    # 如果有代号,这种情况绝对不应该发生
    # 还应该提供代码。
    # 为了完整性起见,处理这种情况。
    " [ #{ code_name } ]: #{ message } "
  elsif 代码
    " [ #{ code } ]: #{ message } "
  else
    message
  end
end

实例方法详细信息

# write_concern_error?true | false

返回文档是否包含写关注错误。 故障可能具有顶级错误和写关注错误,或两者之一。

返回:

  • ( true | false )

    文档是否包含写关注错误。 故障可能具有顶级错误和写关注错误,或两者之一。

由于:

  • 2.10.0



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

如果存在写关注错误并具有代码,则返回该写关注错误的错误代码。

返回:

  • ( Integer | nil )

    写关注错误的错误代码(如果存在写关注错误并具有代码)。

由于:

  • 2.10.0



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_namestring | nil

返回 如果写关注错误存在且具有代码名称,则为写关注错误的代码名称。

返回:

  • ( string | nil )

    如果写关注(write concern)错误存在且具有代码名称,则为写关注(write concern)关注错误的代码名称。

由于:

  • 2.10.0



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

返回服务器报告的写关注错误文档(如果有)。

返回:

  • ( Hash | nil )

    向服务器报告的写关注错误。

由于:

  • 2.0.0



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_labelsArray<String> | nil

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

写关注错误(如果存在写关注错误)。

返回:

  • ( Array<String> | nil )

    与此相关的错误标签

由于:

  • 2.0.0



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